#!/usr/bin/python3 def fib(max): n, a, b = 0, 0, 1 while n < max: print(b) yield 123456 a, b = b, a + b n = n + 1 return 'done' o = fib(10) print(next(o));
yield真的是一个很神奇的东西啊
有yield的函数就像类一样
必须有 exampel = function_name()
然后调用next(example)或者example.__next__()来让程序运行到第一个yield处并返回yield后面的值
接着不停的调用这个函数让他运行到第二个yield......
就跟断点一样
在整个函数执行完之后会报错,错误的返回值就是函数最后的返回值
所以如果想不报错,正确的方法是用for
#!/usr/bin/python3 def fib(max): n, a, b = 0, 0, 1 while n < max: print(b) yield 123456 a, b = b, a + b n = n + 1 return 'done' for f in fib(10): print(f)
输出是
1
123456
1
123456
2
123456
3
123456
5
123456
8
123456
13
123456
21
123456
34
123456
55
123456