为什么在交互式Python中输入None无法打印?

时间:2018-06-16 12:52:25

标签: python interactive repr

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

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

2 个答案:

答案 0 :(得分:2)

在交互模式下,如果不是None,则任何表达式语句的结果仅打印 doc

中描述了此行为
  

使用表达式语句(主要是交互式)来计算和写入值[...]

     

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

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

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

答案 1 :(得分:1)

因为否则所有没有返回任何内容的函数调用都会打印None