def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
for n in fib(6):
print(n)
1.当for循环执行的时候,开始遍历fib(6)中的第一个元素,此时:n, a, b = 0, 0, 1,yield b返回值为0,while循环暂停,输出b值0
2.当for循环执行第二次的时候,开始遍历fib(6)中第二个元素,此时接着上次while循环暂停的地方继续走:a,b=b,a+b。。。。。如此循环,不知道我理解的对不对
Gingbery
编程小白一个,说下自己对文中的generator生成器的理解,可能我比较笨,看了好久才明白。。。
1.当for循环执行的时候,开始遍历fib(6)中的第一个元素,此时:n, a, b = 0, 0, 1,yield b返回值为0,while循环暂停,输出b值0 2.当for循环执行第二次的时候,开始遍历fib(6)中第二个元素,此时接着上次while循环暂停的地方继续走:a,b=b,a+b。。。。。如此循环,不知道我理解的对不对