我正在尝试学习如何使用生成器,所以我写了这个,但它只是一直打印相同的值。为什么?
我希望它能够生成从999到100的值。
>>> def gen_a():
a=999
while a>99:
yield a
a-=1
>>> gen_a().next()
999
>>> gen_a().next()
999
>>> gen_a().next()
999
答案 0 :(得分:8)
因为你一遍又一遍地生成发电机。
尝试:
f = gen_a()
f.next()
f.next()
答案 1 :(得分:6)
每次都在创建一个新的生成器。试试这个:
>>> g = gen_a()
>>> g.next()
999
>>> g.next()
998
>>> g.next()
997