divide into python
my2010Sam
这个作者很懒,什么都没留下…
展开
-
修改类属性
例子一:一下是修改类属性,class counter: count = 0 def __init__(self): self.__class__.count+=1 #此时类属性被类和所有类实例共享print counter.count # 0c=counter()print c.count # 1d=counter() print d.原创 2013-11-06 16:48:22 · 792 阅读 · 0 评论 -
生成器介绍
函数中出现关键字yield,则它是一种每次生成一个值的特殊函数,调用它会返回一个生成器对象,它可以返回x的连续值调用含有yield关键字的函数,即可创建一个生成器的实例。不断调用生成器对象的next()方法将从你上次离开的位置重新开始,并继续下去,直到又遇到yield语句。def make_counter(x): print 'entering make_counter functio原创 2013-12-31 21:17:12 · 709 阅读 · 0 评论 -
使用getattr()
getattr(object ,name [, default] )1. 如果object 含有name属性,则返回name属性,可以直接使用该属性2. 如果object 没有name属性,且提供了default值,则返回default原创 2014-02-24 15:50:05 · 1167 阅读 · 0 评论 -
多态 分发
#coding:utf-8def output_xml(name): print 'XML:%s' % namedef output_html(name): print 'HTML:%s' % namedef output_doc(name): print 'DOC:%s' % namedef putdoc(types,name): print t原创 2013-11-05 19:11:19 · 877 阅读 · 0 评论 -
#小练习 输出模块中方法及其docstring
divide into python 中例子,输出模块的函数及docstring文档内容。以下例子是通过调用getdoc模块中的main方法,输出imp_main模块中方法及docstringimp_main.py :#coding:utf-8#运行此模块时,调用此函数def runself(): 'execute this method when run thi原创 2013-11-05 18:17:32 · 1032 阅读 · 0 评论 -
琐碎知识点
if not s: #检查空字符串,若成立,raise异常 raise InvalidRomanNumeralError,'Input can not be blank'原创 2013-12-25 20:01:20 · 681 阅读 · 0 评论 -
使用文件进行优化
#函数也是对象,将函数赋值给变量rule,使用rule接收参数,调用函数#coding:utf-8import reimport string'''rule.en内容:[szx]$ $ es[^aeioudgkprt]h$ $ es[^aeiou]y$ y$ ies$ $原创 2014-01-01 14:13:06 · 814 阅读 · 0 评论 -
生成器的应用例子
dive into python P345使用生成器替代递归:def fib(maxnumber): a,b=0,1 while a<maxnumber: yield a a,b=a+b,aif __name__ == '__main__': #fib(100)返回一个生成器的对象 #for循环将会创建一个生成器转载 2013-12-31 21:32:41 · 851 阅读 · 0 评论 -
全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment
总结:内部函数,不修改全局变量可以访问全局变量内部函数,修改同名全局变量,则python会认为它是一个局部变量在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError在程序中设置的sum属于全局变量,而在函数中没有sum的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始转载 2014-01-01 16:35:11 · 104604 阅读 · 3 评论 -
移除连续重复的字符串元素
dive into python P350移除连续重复的字符串元素b='abccdefekjllj'def remove(): a2=b[0] for i in b[1:]: if a2[-1]!=i: a2+=i print a2 #abcdefekjlj转载 2014-01-01 15:53:10 · 2426 阅读 · 0 评论 -
优化程序结构
优化程序结构,增加程序的可读性#coding:utf-8import redef match_sxz(noun): return re.search('[sxz]$',noun)def apply_sxz(noun): return re.sub('$','es',noun)def match_h(noun): return re.search('[^adio原创 2013-12-30 20:53:05 · 812 阅读 · 0 评论 -
以lambda形式优化结构
#coding:utf-8import re'''以lambda函数形式将这些函数的内容直接嵌入rules列表本身'''rules=\((lambda word:re.search('[sxz]$',word),lambda word:re.sub('$','es',word)),(lambda word:re.search('[^aeioudgkprt]h$',word),原创 2013-12-30 21:07:11 · 738 阅读 · 0 评论 -
使用locals()获得类,进行分发
参考dive into python P142#coding:utf-8'''locals()字典接收全局的类名称,从而获得类,然后实例化该类,调用实例的方法'''#定义类 myclassclass myclass: def __init__(self): self.name = "sam" def report(self):原创 2014-02-21 14:51:57 · 748 阅读 · 0 评论