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))
解释:
这是生成器的示例。使用 iter
和 next
我们可以生成值
n = iter(liste)
print(next(n))
因为print()
returnsNone
。
您实际上是在做 print(print(..))
。内部 print
打印如你所料 ('foo'
, ...) 但外部 打印 print 这是 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))
解释:
这是生成器的示例。使用 iter
和 next
我们可以生成值
n = iter(liste)
print(next(n))
因为print()
returnsNone
。
您实际上是在做 print(print(..))
。内部 print
打印如你所料 ('foo'
, ...) 但外部 打印 print 这是 None
的来源.