为什么我的生成器总是 returns 相同的值?

Why my generator always returns the same value?

我正在使用 python3 实现生成器示例,但在使用 next():

时这不起作用
def rgb():
    for r in range(256):
        for g in range(256):
            for b in range(256):
                yield r, g, b

for x in range(5):
    print(next(rgb()))

输出:

(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)

现在,如果我使用 for 作品:

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)

符合预期。