Python:生成器失败

时间:2014-03-13 17:01:47

标签: python generator

def sp():
    i = 0
    while True:
        for j in range(i):
            yield(j)
        i+=1

此生成器应该yield range (0, i)0的所有整数,但每次调用next()时都会一直返回{{1}}。为什么?

感谢。

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的下一个值。