Python生成器(3)--生成器生成 斐波那契数列与send方法

输入:
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

上一篇:记录一下挖到的一个外国网站的邮件轰炸漏洞


下一篇:基于硬件 SPI 的数据抽象实例