python 生成器 yield理解

yield: generator里面的yield相当于一个断点? 下次代码执行的时候从这个断点开始执行

1
2
3
4
5
6
7
8
9
def fib(n):
prev, curr = 0, 1
while n > 0:
n -= 1
yield curr
prev, curr = curr, curr + prev

print([i for i in fib(10)])
#[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
1
2
3
4
5
6
>>> g = (x*2 for x in range(10))
>>> type(g)
<type 'generator'>
>>> l = [x*2 for x in range(10)]
>>> type(l)
<type 'list'>
请作者喝一杯咖啡☕️