1、在Python中,这种一边循环一边计算的机制,称为生成器:generator,只要把一个列表生成式的[]
改成()
,就创建了一个generator
2、generator也可以迭代,用for来列出内部元素
>>>g = (x*x for x in range(10))
>>>for n in g
...print (n)
3、如果一个函数里面包含“yield”,这个函数就不再是普通函数,而是一个generator,关键点在于,函数是顺序执行,遇到return或者最后一行语句返回,而generator,在每次调用next()的时候执行,遇到yield返回,再次执行时从上次返回的yield语句处继续执行。
例子:定义一个generator,依次返回1、3、5
def odd():
print ('step 1')
yield (1)
print ('step 2')
yield (2)
print ('step 3')
yield (3)
调用的时候,首先生成generator对象,用next()不断获取下一个返回值
>>>o = odd
>>>next (o)
step 1
1
>>>next (o)
step 2
3
>>>next (o)
step 3
5
这里odd已经是generator