[英]Python output from print(print(print('aaa')))
我不太明白從以下方面收到的輸出:
打印(印刷(印刷( 'AAA')))
AAA
沒有
沒有
首先aaa很清楚。 但我認為第二次打印(aaa)將拋出一個錯誤,因為變量aaa未定義...
打印(印刷( 'AAA'))
外部print
將收到的內部沒有什么爭論print
輸出到stdout,但什么內在的print
返回。 並且print
函數永遠不會返回任何內容(相當於返回None
)。 這就是你看到這個輸出的原因。
這是一個做同樣事情的例子,你會更好地理解它:
def f():
print('Hello')
print(f())
輸出:
Hello
None
None
,因為你基本上是print(print('Hello'))
, print
在python解釋器中寫一些東西,當你type(print())
它輸出: <class 'NoneType'>
所以這部分是print(None)
。
這就是為什么print(print(print('aaa')))
的輸出包含None
的原因
首先我們分開我們的代碼
>>>a = print('aaa')
aaa
>>>b = print(a)
None
>>>print(b)
None
現在你懂了 !! (python 3)
print
打印在標准輸出上並返回None
。 您的第二個print
語句獲得第一次print
結果,即None
在python中,當一個函數沒有顯式返回任何內容時,它返回None
。
像print
這樣的函數會執行一個動作但不應返回任何內容,因此它返回None。 打印功能可能是這樣的:
import sys
def print(*args, sep=' ', end='\n', file=sys.stdout, flush=False)
for arg in args:
file.write(str(arg))
if arg is not args[-1]:
file.write(str(sep))
file.write(str(end))
if flush:
sys.stdout.flush()
這相當於:
def print(*args, sep=' ', end='\n', file=sys.stdout, flush=False):
# The same code
return None
在這兩種情況下你都會得到
>>> print('Hello world')
Hello world
>>> print(print('Hello world'))
Hello world
None
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.