小编典典

为什么打印功能返回无?

python

我试图理解为什么外部print回报None

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

我注意到:

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

有人能解释一下这里发生的一切吗?谢谢!


阅读 166

收藏
2020-12-20

共1个答案

小编典典

print()函数返回None。您正在打印该返回值。

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

您似乎将打印与返回此处混淆了。Python交互式解释器 也会 打印;如果不产生,它将打印直接在提示符下运行的表达式的结果None

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

该字符串已回显(打印)到您的终端,而None并非如此。

由于print()返回None但写入相同的输出(您的终端),结果可能 看起来
相同,但是它们是非常不同的动作。我可以print()写点其他东西,您在终端上什么也看不到:

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

print()函数调用未在终端上产生输出,并返回了None该输出,然后未回显。

2020-12-20