为什么打印函数return None?

Why does the print function return None?

我试图理解为什么外 print returns None.

>>> a = print(print("Python"))
Python
None
>>> print(type(a))
<class 'NoneType'>

我注意到了:

>>> a = print("hey")
hey
>>> type(a)
<class 'NoneType'>

谁能解释一下这里发生了什么?谢谢!

print() 函数 returns None。您正在打印 return 值。

那是因为print()没有return;它的工作是将参数转换为字符串后写入文件对象(默认为 sys.stdout)。但是 Python 中的所有表达式(包括调用)都会产生一个值,因此在这种情况下会产生 None

您在这里似乎将打印与 returning 混淆了。 Python 交互式解释器 打印;它直接在提示中打印表达式 运行 的结果,前提是它们不产生 None:

>>> None
>>> 'some value'
'some value'

该字符串已回显(打印)到您的终端,而 None 没有。

由于 print() returns None 但写入相同的输出(您的终端),结果可能 看起来 相同,但它们是非常不同的动作。我可以让 print() 写入其他东西,你不会在终端上看到任何东西:

>>> from io import StringIO
>>> output = StringIO()
>>> print('Hello world!', file=output)
>>> output.getvalue()
'Hello world!\n'

print() 函数调用没有在终端上产生输出,并且 returned None 然后没有回显。

函数print来自C语言,选择“by design”使用“0”(零)表示脚本执行后成功。此外,所有基于此概念的项目如 linux、shell 和 python 语言都使用它来通知方法的“调用者”是否成功执行。

互联网上最常见的错误是代码 404 - 未找到。 RFC 2616

更多参考点击