def gensquares(r):
for i in range(r):
yield i
a = gensquares(5)
print(next(gensquares(5)))
print(next(a))
print(next(gensquares(5)))
print(next(a))
print(next(gensquares(5)))
print(next(a))
print(next(gensquares(5)))
print(next(a))
为什么 next(gensquares(5) 不进行迭代?
gensquares(5) 代表你重新初始化了一个生成器,所以每次都是从第一个迭代。a的话是代表了一个生成器,所以每次next都会迭代
等价于这个写法
def gensquares(r):
for i in range(r):
yield i
a = gensquares(5)
b = gensquares(5)
print(next(b))
print(next(a))
b = gensquares(5)
print(next(b))
print(next(a))
b = gensquares(5)
print(next(b))
print(next(a))
b = gensquares(5)
print(next(b))
print(next(a))