簡體   English   中英

打印的Python輸出(print(print('aaa')))

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM