我认为Python交互模式下的显示始终等同于print(repr())
,但None
并非如此。这是一种语言功能还是我错过了什么?谢谢
>>> None
>>> print(repr(None))
None
>>>
答案 0 :(得分:4)
这是一个刻意的功能。如果您运行的python代码的计算结果为None
,则不会显示它。
这在很多时候很有用。例如,调用具有副作用的函数可能很有用,并且此类函数实际返回None
,但您通常不希望看到结果。
例如,调用print()
会返回None
,但您通常不希望看到它:
>>> print("hello")
hello
>>> y = print("hello")
hello
>>> y
>>> print(y)
None
答案 1 :(得分:2)
是的,这种行为是有意的。
7.1。表达式陈述
使用表达式语句(主要是交互式)来计算和 写一个值,或(通常)调用一个过程(一个函数) 没有有意义的结果;在Python中,过程返回值
None
)。表达式语句的其他用法是允许的 偶尔有用。表达式语句的语法是:expression_stmt ::= starred_expression
表达式语句计算表达式列表(可能是 单表达。)
在交互模式下,如果值不是
None
,则转换为a 使用内置repr()
函数和结果字符串的字符串 在一行上写入标准输出(除非是 结果是None
,因此过程调用不会导致任何输出。)
答案 2 :(得分:1)
在Python中,一个不返回任何东西但仅为其副作用调用的函数实际上返回None。由于这些函数很常见,因此Python交互式解释器在这种情况下不会打印任何内容。通过扩展,当交互式表达式求值为None时,它不会打印任何内容,即使它不是函数调用。
如果因为你有
可能会误导初学者>>> a = 1
>>> a
1
>>>
但是
>>> a = None
>>> a
>>>
但确实按设计
答案 3 :(得分:1)
None
表示没有值,但可以观察到缺席。因为它代表Python中的某些东西,它的__repr__
不可能返回 ; None
并非一无所获。
结果是刻意的。例如,如果函数返回None
(类似于没有return语句),则对此类函数的调用的返回值不会显示在控制台中,因此例如print(None)
不会打印 None
两次,因为函数print
同样返回None
。
在旁注中,print(repr())
将在Python中引发TypeError
。