我试图理解为什么外部print回报None。
print
None
>>> a = print(print("Python")) Python None >>> print(type(a)) <class 'NoneType'>
我注意到:
>>> a = print("hey") hey >>> type(a) <class 'NoneType'>
有人能解释一下这里发生的一切吗?谢谢!
该print()函数返回None。您正在打印该返回值。
print()
这是因为print()没有什么 要 回报; 它的工作是将参数转换为字符串后,将其写入文件对象(默认为sys.stdout)。但是Python中的所有表达式(包括调用)都产生一个值,因此在这种情况下None就产生了。
sys.stdout
您似乎将打印与返回此处混淆了。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该输出,然后未回显。