python - 为什么 list(print(x.upper(), end =' ' ) for x in 'spam' ) 得到一个 [None, None, None, None] 列表?

标签 python python-3.x

《Learning Python 5th》第608页有示例代码:

>>> list(print(x.upper(), end=' ') for x in 'spam')
S P A M [None, None, None, None]

那么,为什么最后会弹出[无,无,无,无]?

最佳答案

print 函数返回 None...因此,您的表达式构造了一个列表 [None, None, None, None]。由于您处于 python 读取求值打印循环 (REPL) 中,因此表达式的结果在求值后将被打印...

因此,表达式的求值具有打印 SPA M 的副作用,然后在对表达式求值后,打印它的值 ([None, None, None, None ])。

关于python - 为什么 list(print(x.upper(), end =' ' ) for x in 'spam' ) 得到一个 [None, None, None, None] 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38626055/

相关文章:

python - 多请求 pycurl 永远运行(无限循环)

python - 整个程序内的延迟打印

python 3 如何在上一个输入行上打印

python-3.x - TF 2.0错误: Gradients does not exist for variables during training using gradienttape

python - 二维数组与一维数组比较返回二维数组

python - 如何使用 Fabric 通过代理建立 SSH 连接?

python - 如何在 python 中创建伸缩术语集?

python - 从 for 循环中提取特定的迭代输出

python-3.x - 使用 SAS token 从 Azure Blob 存储下载 csv 文件列表的 Python 代码

python - 使用 numpy 在第一个矩阵列中搜索数组并获取下一列值