簡體   English   中英

Python中的Pass和None之間有什么區別

[英]What is the difference between Pass and None in Python

我個人想知道使用Pass和None之間的語義差異。 我無法找到任何執行上的差異。

PS:我無法在SO中找到任何類似的問題。 如果您找到一個,請指出。

謝謝!

pass是一個聲明 因此,它可以在任何地方使用,語句可以用來什么都不做。

None是一個原子 ,因此它是最簡單形式的表達 它也是“nothing”的關鍵字和常量值( NoneType的唯一實例)。 因為它是一個表達式,所以在每個地方都有一個表達式是有效的。

通常, pass用於表示空函數體,如下例所示:

def foo():
    pass

此函數不執行任何操作,因為它的唯一語句是無操作語句pass

由於表達式也是一個有效的函數體,您也可以使用None來編寫它:

def foo():
    None

雖然函數的行為相同,但它有點不同,因為表達式(雖然常量)仍將被評估(盡管立即被丟棄)。

簡單來說, None是可以分配給表示空虛的變量的值。 它可以作為默認狀態使用:

a = None
def f():
   a = 5
f()

pass是一個像nop的聲明。 在定義函數存根時,它非常有用,例如:

def f():
    pass

在類C語言中,您可以通過簡單地在大括號void f() { }之間放置任何內容來定義空函數,但由於Python使用縮進而不是大括號來定義塊,所以必須在主體中放置一些東西 ,然后pass是放在那里的慣用之物。

passNone之間的絕對差異

pass (沒有大寫P)

因為python是縮進基本語言,所以如果你定義一個新方法,那么你應該有一些代碼。

def method_a():
    some_thing = 1  # Have to do some thing

如果沒有,則應該引發異常,以便您可以使用pass關鍵字來解決此問題。

def method_a():
    pass  # Do nothing

None

如此非常不同, None關鍵字與來自另一種語言(如Java或C)的null關鍵字略微相同。可能是空數據或不分配這樣的數據。

[] == None
null == None
() == None
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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