PYTHON相关知识准备:
1.yield
在学代码的时候,发现很多函数的返回是用的yield关键字。这跟python中的迭代器和生成器有关。
for line in open("test.txt"): #use file iterators print line
这样的代码是使用了迭代器的,每次读取一行,然后再读取下一行。
迭代器跟生成器是联系在一起的,如果声明为yield,则函数以生成器的形式编译(??python不是解释性语言吗?怎么这里说编译?)
>>> def g(n): ... for i in range(n): ... yield i **2 ... >>> for i in g(5): ... print i,":", ... 0 : 1 : 4 : 9 : 16 :
如上面的例子,g(n)函数不是一次性执行完的,而是得到一个值后,就暂停一下,然后输出,再得到下一个值,再暂停这样的。
参考资料:http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html
2.什么是*args和**kwargs
def test(a,*args,**kwargs): print a #print b #print c print args print kwargs test(1,2,3,d='4',e=5) 输出结果: 1 (2, 3) {'e': 5, 'd': '4'}
从例子中可以看出,args是有名参数后面剩下的参数,kwargs在args之后表示成对键值对。
参考资料:http://blog.sina.com.cn/s/blog_65a8ab5d0101fglm.html
3.enumerate函数
enumerate 函数用于遍历序列中的元素以及它们的下标
>>> for i,j in enumerate(('a','b','c')): print i,j 0 a 1 b 2 c >>> for i,j in enumerate([1,2,3]): print i,j 0 1 1 2 2 3