【问题标题】:How Generator expressions work internally in python? [duplicate]生成器表达式如何在 python 内部工作? [复制]
【发布时间】:2025-12-30 10:15:10
【问题描述】:

我已经尝试过以下代码:

result = (x for x in range(3))


for y in result:
    print(y)

我得到以下输出:

0
1
2

但是当我使用这段代码时:

result = (print(x) for x in range(3))


for y in result:
    print(y)

我得到以下输出:

0
None
1
None
2
None
    

谁能解释一下,为什么这个 None 在第二个代码中输出?

【问题讨论】:

  • None 是生成器内部对print 的调用的返回值。

标签: python expression generator


【解决方案1】:

因为print(x) 打印 x 的值(这是打印的数字)并返回 None(这是打印的 Nones)

【讨论】:

    【解决方案2】:

    print 不返回值,因此您看到的是None,这是print 的返回值,以及print 的输出。这是对副作用使用理解语法的经典案例,它不使用生成器/理解语法来包含实际结果。您可以通过运行来检查:

    print(print('x'))
    x
    None
    

    【讨论】: