在Python交互模式下未显示“无”

Chr*_*nds 6 python

我以为Python交互模式下的显示总是等效的print(repr()),但事实并非如此None。这是语言功能还是我缺少什么?谢谢

>>> None
>>> print(repr(None))
None
>>>
Run Code Online (Sandbox Code Playgroud)

PM *_*ing 6

是的,这种行为是故意的。

来自Python 文档

7.1. 表达式语句

表达式语句用于(主要是交互地)计算和写入值,或者(通常)调用过程(不返回任何有意义结果的函数;在 Python 中,过程返回值 None)。表达式语句的其他用途是允许的并且偶尔有用。表达式语句的语法是:

expression_stmt ::=  starred_expression
Run Code Online (Sandbox Code Playgroud)

表达式语句计算表达式列表(可以是单个表达式)。

在交互模式下,如果值不是None,则使用内置repr()函数将其转换为字符串,并将结果字符串单独写入一行中的标准输出(除非结果是None,这样过程调用就不会导致任何输出。)


Dav*_*nes 5

这是故意的功能。如果您运行的python代码评估为准确None,则不会显示该代码。

很多时候这很有用。例如,调用具有副作用的函数可能会很有用,此类函数实际上会返回,None但是您通常不希望看到结果。

例如,调用print()return None,但是您通常不希望看到它:

>>> print("hello")
hello
>>> y = print("hello")
hello
>>> y
>>> print(y)
None
Run Code Online (Sandbox Code Playgroud)