‘’‘用生成器实现斐波那契数列’’’
‘’‘如果一个函数里面出现yield就表示这是生成器’’’
‘’‘yield特点:程序在执行的时候遇到yield会暂停执行,如果yield后面有返回值,
先返回值再暂停,再次启动生成器获取数据的时候会从暂停的地方开始执行’’’
‘’‘return只返回一次值,后面的代码不执行
yield可以多次返回值’’’
def fibo(num):
a=0
b=0
current_index = 0
print(‘cccccccccccccccccccccccccccccccccc’)
while current_index < num:
result = a
a,b = b,a+b
current_index += 1
print(‘aaaaaaaaaaaaaaaaaaaaaaa’)
yield result#返回a
print(‘bbbbbbbbbbbbbbbbbbbbbbb’)
return ‘ok’
if name == ‘main’:
ret=fibo(3)
print(next(ret))
# for i in ret:
# print(i)
while True:
try:
result1=next(ret)
print(result1)
except StopIteration as e:
print(e.value)
break