Python:next()函数返回意外的';无';

Python:next()函数返回意外的';无';,python,next,Python,Next,这是我的第一个问题,所以我会尽量说清楚。 我注意到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

这是我的第一个问题,所以我会尽量说清楚。 我注意到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
因此,我的问题很简单:

为什么运行后会出现
响应?

什么是好方法?什么时候是使用
next()
的好时机?

谢谢

说明:

这是发电机的一个例子。使用
iter
next
我们可以生成值

n = iter(liste)

print(next(n))
因为
print()
返回
None


实际上,您正在执行
打印(打印(..)
。内部的
print
按预期打印(
'foo'
,…),而外部打印的是
None
的打印结果。

您正在打印打印打印功能的结果。更改行G=(列表中x的x)print返回None,因此G是Nones的生成器,将
print(x)
更改为xOk,我必须同意。谢谢
n = iter(liste)

print(next(n))