def sp():
i = 0
while True:
for j in range(i):
yield(j)
i+=1
此生成器应该yield
range
(0, i)
中0
的所有整数,但每次调用next()
时都会一直返回{{1}}。为什么?
感谢。
答案 0 :(得分:7)
不,它没有。这是输出:
>>> s=sp()
>>> s
<generator object sp at 0x102d1c690>
>>> s.next()
0
>>> s.next()
0
>>> s.next()
1
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
3
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
3
>>> s.next()
4
这正是您所期望的。每次,您从0开始,然后转到i
,然后再从0开始,再到i
的下一个值。