2011-04-26 27 views
11

我有一個python特定的問題。作爲參數,單個下劃線_是什麼意思? 我有一個函數hexdump(_)。這個_從來沒有定義過,所以我猜它有一些特殊的價值,我找不到一個參考,告訴我網絡上的含義。如果你能告訴我,我會很高興。作爲函數參數的Python下劃線

與問候

回答

15

在Python殼,下劃線(_)指外殼最後計算的表達式的結果:

>>> 2+3 
5 
>>> _ 
5 

還有_2_3等在IPython中,但不在原始的Python解釋器中。據我所知,它在Python源代碼中沒有特別的含義,所以我猜它是在你的代碼的某個地方定義的,如果它運行沒有錯誤的話。

3

它在您編寫的代碼中沒有特別的價值。它存儲了最後一個表達式的你在交互式解釋評估,是爲了方便起見

+0

哪位翻譯做到這一點? – sureshvv 2011-04-26 10:13:35

+0

您在提示符下輸入「python」時獲得的解釋器,然後按回車鍵。嘗試在'>>>'提示符下輸入'3 + 4',然後按回車。然後嘗試打印'_'的值。你會得到'7'(評估上一個表達式的結果)。 – 2011-04-26 10:15:50

-4

是它在你的代碼中的含義,這個例子顯示了結果:

>>> def f(x): 
    return (x, x + 2) 

>>> (i, j) = f(5) 
>>> i 
5 
>>> j 
7 
>>> (k, _) = f(7) 
>>> k 
7 

正如你所看到的,這允許你不要給返回值命名。但是你的情況不同,因爲'_'被用作參數(標準python shell期望它作爲變量:NameError: name '_' is not defined)。

+5

這不是「在你的代碼中」,那是「在REPL中」。 – 2011-04-26 07:41:49

+0

但你確實給了一個返回值的名字,它的名字是'_' – Andrey 2011-04-26 08:26:14

+1

@Ignacio:你說的對,我就是這個意思@安德烈:的確,我意識到這是一個像其他任何名字一樣的變量名,我真的認爲這是一種語法糖。 – Emmanuel 2011-04-26 13:28:52