生成器表达式如何在 python 内部工作?

use*_*355 2 python expression generator

我已经尝试过以下代码:

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


for y in result:
    print(y)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

0
1
2
Run Code Online (Sandbox Code Playgroud)

但是当我使用此代码时:

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


for y in result:
    print(y)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

0
None
1
None
2
None

    Can anyone explain, Why this **None** is coming in output in second code?
Run Code Online (Sandbox Code Playgroud)

bar*_*rny 6

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


C.N*_*ivs 5

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

print(print('x'))
x
None
Run Code Online (Sandbox Code Playgroud)