生成器
生成器也是迭代器,通过next(函数)返回yield的值
yield语句:
类似return,只是暂时返回,下次调用时将从该语句后面执行
协同程序(生成器):
就是可以运行的独立函数调用,函数可以暂停或挂起,并在需要的时候从程序离开的地方继续或重新开始
def myGen():
print("生成器被执行")
yield 1
yield 2
例:Fabs
def Fabs(n):
a = 0
b = 1
while True:
if a > n:
raise StopIteration
a, b = b, a + b
yield a
fabs = Fabs(20)
for i in fabs:
print(i)
生成器推导式:
e = (i for i in range(10))
e是一个生成器
i for i in range(10)#无需加括号直接就可以作为函数参数
sum(i for i in range(10))
生成器.send()可以返回给生成器一个值
e.send(1)
#--------在e的生成器中---------
number = yield
#-----number会被赋值为1--------