为什么print函数返回None?

时间:2015-01-15 08:25:17

标签: python python-3.x printing

我试图理解为什么外print会返回None

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

我注意到了:

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

任何人都可以解释一下这里发生的事情吗?谢谢!

1 个答案:

答案 0 :(得分:3)

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,然后未回显。