Python中生成器表达式的内部工作原理是什么?

17 浏览
0 Comments

Python中生成器表达式的内部工作原理是什么?

这个问题已经有了答案:

Python中的“yield”关键字是什么意思?

为什么print函数会返回None?

我尝试了以下代码:

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吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

print函数不返回值,所以你看到的是None,也就是print的返回值以及print输出的结果。这是典型的使用推导式语法来产生副作用的情况,而不是使用生成器/推导式语法来包含实际结果。你可以通过运行以下代码来检查这一点:

print(print('x'))
x
None

0
0 Comments

因为print(x)会打印x的值(也就是被打印的数字),同时返回None(也就是被打印的None值)

0