我以为Python交互模式下的显示总是等效的print(repr()),但事实并非如此None。这是语言功能还是我缺少什么?谢谢
>>> None
>>> print(repr(None))
None
>>>
Run Code Online (Sandbox Code Playgroud)
是的,这种行为是故意的。
7.1. 表达式语句
表达式语句用于(主要是交互地)计算和写入值,或者(通常)调用过程(不返回任何有意义结果的函数;在 Python 中,过程返回值
None)。表达式语句的其他用途是允许的并且偶尔有用。表达式语句的语法是:Run Code Online (Sandbox Code Playgroud)expression_stmt ::= starred_expression表达式语句计算表达式列表(可以是单个表达式)。
在交互模式下,如果值不是
None,则使用内置repr()函数将其转换为字符串,并将结果字符串单独写入一行中的标准输出(除非结果是None,这样过程调用就不会导致任何输出。)
这是故意的功能。如果您运行的python代码评估为准确None,则不会显示该代码。
很多时候这很有用。例如,调用具有副作用的函数可能会很有用,此类函数实际上会返回,None但是您通常不希望看到结果。
例如,调用print()return None,但是您通常不希望看到它:
>>> print("hello")
hello
>>> y = print("hello")
hello
>>> y
>>> print(y)
None
Run Code Online (Sandbox Code Playgroud)