2012-11-29 35 views
5

我發現這種表達多次在Python程序:這個Python表達式有意義嗎?

if variable is not None: 
    dothings(variable) 

我覺得奇怪,我,我認爲它有不超過感:

if variable: 
    dothings(variable) 

也許我不我們知道Python足夠了,表達式在某處被解釋了嗎?

回答

14

variable可能是0,或False[]();換句話說是'虛假',然後if聲明將被跳過。

請參閱Truth testing瞭解有關布爾上下文中被視爲錯誤的更多詳細信息。

總之,測試如果variable is not None允許variable別的,包括原本在布爾環境被認爲是假值。

+0

因此,....「A'不是' B「不同於」A不是B「,Python應用前者。不是嗎? – Zhen

+0

「不是」是「is」的倒數,是的。請參閱http://docs.python.org/2/reference/expressions.html#not-in。你也可以說'不是A是B'。 –

1

例如

i = 0 

if i is not None: 
    print i # prints i 

if i: 
    print i # prints nothing 
0

在google語音python實現中,我也遇到了這個問題,它們的使用是在函數調用期間使用的。參數默認爲「無」,然後當函數被調用時,他們可以檢查值是否被更改或默認值。 I.E.

def login (user=None, password=None) 
    if user is None: 
    user = input('Please enter your username'); 
    ... 
    return <something>; 

通過

login() 

OR

login(user='cool_dude') 

OR

你希望用戶名/密碼的任意組合調用。

此外,邏輯的「更新」意味着變量== true或false。這對於所有情況都是不正確的(它可能在某些情況下有效,但是我把它們扔掉了,因爲這不是一般情況)。通過使用「NONE」邏輯測試的是變量是否包含除NONE之外的任何內容。類似於我上面所說的,所有的「登錄功能」在做的是確定用戶是否通過了任何事情,而不是該值是否有效,是否等。

相關問題