Python 为什么我的生成器总是返回相同的值?

Python 为什么我的生成器总是返回相同的值?,python,generator,python-3.4,Python,Generator,Python 3.4,我正在用python3实现生成器示例,但在使用next()时,这不起作用: 输出: (0, 0, 0) (0, 0, 0) (0, 0, 0) (0, 0, 0) (0, 0, 0) 现在,如果我将用于工作: def rgb(): for r in range(256): for g in range(256): for b in range(256): yield r, g, b for x in rgb():

我正在用python3实现生成器示例,但在使用
next()
时,这不起作用:

输出:

(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
现在,如果我将
用于
工作:

def rgb():
    for r in range(256):
        for g in range(256):
            for b in range(256):
                yield r, g, b

for x in rgb():
    print(x)

您似乎误用了
next()
函数。在本例中,您每次都会创建一个新的rgb()函数实例。试试这个:

def rgb():
    for r in range(256):
        for g in range(256):
            for b in range(256):
                yield r, g, b

it = rgb()
for x in range(5):
    print(next(it))
这张照片

(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0, 0, 3)
(0, 0, 4)
正如所料

(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0, 0, 3)
(0, 0, 4)