[英]Why does the print function return 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()
沒有什么可返回的; 它的工作是在將參數轉換為字符串后將參數寫入文件對象(默認為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
然后沒有回顯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.