为什么打印函数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
更多参考点击
我试图理解为什么外 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
更多参考点击