无限的序列号生成器不能在python中工作?

eli*_*inx 1 python generator

我正在尝试实现一个可以生成无限数字的自然数生成器,我的代码:

def nature():
    s = 0
    while True:
        yield s
        s += 1
Run Code Online (Sandbox Code Playgroud)

当我使用时next(nature()),我得到一个0的序列,为什么这个?以及如何解决它?

>>> next(nature())
0
>>> next(nature())
0
>>> next(nature())
0
>>> next(nature())
0
Run Code Online (Sandbox Code Playgroud)

Jul*_*ien 6

每次打电话给nature()你,都会创建一个新的发电机.而是这样做:

n = nature()
next(n)
next(n)
next(n)
Run Code Online (Sandbox Code Playgroud)