Python: next() 函数 returns 意外 'None'

Python: next() function returns unexpected 'None'

这是我的第一个问题,所以我会尽量说清楚。 我注意到 next() 函数,它似乎是比经典嵌套循环更优雅的解决方案。 所以我运行一个简单的代码:

liste=['foo','bar','baz']

try:
    G= (print(x) for x in liste)
    print(next(G))
    print(next(G))
    print(next(G))
    print(next(G))

except StopIteration:
    print("That was obviously expected")

我期待:

foo
bar
baz
That was obviously expected

出现在我的屏幕上,但我却得到了:

foo
None
bar
None
baz
None
That was obviously expected

所以我的问题很简单:

为什么在运行之后有None个回复?

什么时候用next()比较好?

谢谢

liste=['foo','bar','baz']

n = iter(liste)

print(next(n))
print(next(n))
print(next(n))

解释:

这是生成器的示例。使用 iternext 我们可以生成值

n = iter(liste)

print(next(n))

因为print()returnsNone

您实际上是在做 print(print(..))。内部 print 打印如你所料 ('foo', ...) 但外部 打印 print 这是 None 的来源.