输入: def fibo(max): #用生成器生成斐波那契数列 n,before,after = 0,0,1 while n < max: yield before before,after = after,before+after n += 1 g=fibo(10) #生成斐波那契数列的前10个数 print(g) #打印出生成器内存地址<generator object fibo at 0x00000214314B0660> print(next(g)) #输出0 for i in g: print(i) #输出1 1 2 3 5 8 13 21 34 ######################################### def bar(): print('hello') m = yield 10 #将yield赋值给m,使下次调用send方法时能传值进来 print(m) yield 20 a = bar() a.send(None) #send方法用于传值进生成器函数,如果前面没有执行过next(a),a.send()第一次传值要传None,相当于next(a) res = a.send('hi') #第二次传值把’hi’传给函数bar里的m,然后返回值赋给res print(res) #打印出来res的值应该为20 输出:
<generator object fibo at 0x00000214314B0660>
0
1
1
2
3
5
8
13
21
34
hello
hi
20