为什么打印功能返回无?
我试图理解为什么外部print
回报None
。
>>> a = print(print("Python"))
Python
None
>>> print(type(a))
<class 'NoneType'>
我注意到:
>>> a = print("hey")
hey
>>> type(a)
<class 'NoneType'>
有人能解释一下这里发生的一切吗?谢谢!
-
该
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
该输出,然后未回显。