python yield生成器的理解

python yield生成器,在爬虫框架Scrapy时,都是用的yield,而在实际使用中确没有使用过,网上说的都是生成斐波那契數列,可能是抄袭,反正对于数学不好的人看了是不好理解的,yield的应用场景是在一个函数需要返回一个很大的可迭代对象,如果一次返回的话会占用很大的内存,做爬虫如果数据量较少感觉不到,如果一个函数需要返回亿万级数据,一次返回结果后,还要去迭代这个列表,占用内存比较大,用yidld就可用解决这个问题,貌似实现连接池用yield噢,简单写了个实例代码,如下:

#coding=utf-8
import sys

def test():
    for i in xrange(5):
        yield i

s1 = test()
s2 = test()

print type(s1),s1,type(s2),s2

try:
    print "依次调用--"
    print s1.next(),s1.next(),s1.next(),s1.next(),s1.next(),s1.next(),#next迭代器内置对象
except Exception, e:
    print "\n迭代调用--"
    for i in s2:
        print i

发表评论

电子邮件地址不会被公开。 必填项已用*标注