我试图理解为什么外print
会返回None
。
>>> a = print(print("Python"))
Python
None
>>> print(type(a))
<class 'NoneType'>
我注意到了:
>>> a = print("hey")
hey
>>> type(a)
<class 'NoneType'>
任何人都可以解释一下这里发生的事情吗?谢谢!
答案 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
,然后未回显。