首页 > 解决方案 > 为什么在交互式 Python 中键入 None 什么也不打印?

问题描述

python以交互方式启动时,它将评估表达式,[]并打印转换为字符串的结果或执行语句,如i = 1. 由于语句没有值,如果它们不向终端写入任何内容,则不会打印任何内容。但是,当我键入None表达式时,Python 什么也不打印,甚至'None'. 乍一看,我以为repr(None)会返回一个空字符串,但我错了。那么为什么 PythonNone不打印任何东西来制作一个特殊情况呢?

>>> None
>>>
>>> repr(None)
'None'
>>> str(None)
'None'

标签: pythoninteractiverepr

解决方案


在交互模式下,任何表达式语句的结果在它不是时才被打印None。此行为在doc中进行了描述。

表达式语句用于(主要是交互地)计算和写入一个值 [...]

在交互模式下,如果值不是None,则使用内置repr()函数将其转换为字符串,并将生成的字符串写入标准输出

原因是大多数有副作用的函数 return NoneNone在控制台中发送垃圾邮件会很烦人。

>>> lst.append(1)
None
>>> lst.append(2)
None
>>> lst.append(3)
None
>>> print('Please stop...')
Please stop...
None

推荐阅读