Python:生成器失败

Ann*_*eOK 4 python generator

def sp():
    i = 0
    while True:
        for j in range(i):
            yield(j)
        i+=1
Run Code Online (Sandbox Code Playgroud)

这个生成器应该yieldrangeof的所有整数(0, i),但它会0随着每次调用而一直返回next().为什么?

谢谢.

Dan*_*man 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
Run Code Online (Sandbox Code Playgroud)

这正是你所期望的.每次,你从0开始i,然后转到任何状态,然后再从0开始,再到下一个值i.