Python 生成器
1.生成器创建方式
1.1 (x*2 for x in range(10))
1.2 yield关键字
def foo(): #生成器对象 print ('ok') yield 1 print ('ok2') yield 2 g=foo() #生成器对象 #print(g) #next(g) 1 #next(g) 2 #next(g) 报错 for i in foo(): print(i)
for循环in后跟着的是 可迭代对象(对象拥有iter方法的)
1 def fibo(max): 2 n,before,after=0,0,1 3 while (n<max) 4 yield before 5 before,after=after,before+after 6 n+=1
7 fibo(8) #生成器对象
生成器内置send函数的使用,与next()函数类似,均进入生成器函数执行代码,并返回值,但是当第一次send函数调用前没有next()函数,只能传递none参数,即fibo(8).send(none)
def foo(): print('ok1') count= yield 1 #count值为'eeee' print(count) print('ok2') yield 2 g=foo() next(g) #等价于 g.send(None) 第一次进入生成器时,不给yield指向变量赋值 打印值为 1 a=g.send('eeee') print(a) #打印值为2
yield 停止执行之后代码,返回生成器调用处,再次调用时,从上次地方继续执行。
浙公网安备 33010602011771号