【飞谷六期】爬虫项目3

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

参考资料:http://blog.sina.com.cn/s/blog_a299c85e0101h3y4.html

 

posted @ 2015-10-23 17:22  匡子语  阅读(179)  评论(0)    收藏  举报