求大神解析
有大神能帮我解读一下这个代码吗?其他地方看到的,但是看不懂,尤其是最后while的那一段,求解
有大神能帮我解读一下这个代码吗?其他地方看到的,但是看不懂,尤其是最后while的那一段,求解
2019-10-24
import sys
def fibonacci(n): #这是一个生成器函数因为里面包含了yield指令,这个函数是用来return斐波那契里面各个项的
a, b , counter = 0, 1, 0 #分别给a, b , counter 赋值为 0, 1, 0
while True: #循环指令
if (counter > n):
return #这段代码是用来关闭生成器的,因为是用return而不是yeild返回,如果再次使用next()方法会报错StopIteration异常。
yield a #yield和return方法都会返回一个值,不同的是生成器可以通过next()方法接着yield的位置执行代码
a, b = b, a+b #这时候a就变成了b,而b变成了原先的a加原先的b
counter += 1 #计数器+1,等到计数器大于n的时候就会触发return结束生成器
f = fibonacci(10) # f 会初始化这个生成器函数,
while True:
try:
print(next(f), end ='')#这里打印出下一个返回值,在count > n 之前都是由yield返回的b
except StopIteration:#就像之前说的,当是由return返回值的时候,再使用next()就会报错StopIteration
sys.exit() #退出程序
举报