[英]Does this Python expression make sense?
我在python程序中多次發現這種表達式:
if variable is not None:
dothings(variable)
這對我來說似乎很奇怪,我認為它沒有比以下更有意義了:
if variable:
dothings(variable)
也許我不太了解Python,並且表達式在某處被解釋了?
variable
可以是0
,或False
,或[]
,或()
; 換句話說是“虛假”,然后會跳過if
語句。
有關布爾上下文中被視為false的更多詳細信息,請參閱真值測試 。
簡而言之,測試variable is not None
允許variable
為其他任何東西 ,包括在布爾上下文中否則將被視為False的值。
有些值是假的 ,但不是None
。 您可能仍希望將dothings()
為這些值。
以下是Python 2中偽造的東西。 (您可能希望將URL中的'2'更改為'3'以獲取Python 3的值,但它沒有太大變化。)
例如
i = 0
if i is not None:
print i # prints i
if i:
print i # prints nothing
在谷歌語音python實現中,我也遇到了這個問題,他們的使用是在函數調用期間。 參數默認為“None”,然后在調用函數時,它們可以檢查值是否更改或默認值。 IE
def login (user=None, password=None)
if user is None:
user = input('Please enter your username');
...
return <something>;
叫做
login()
要么
login(user='cool_dude')
要么
您希望的任何用戶/密碼組合。
此外,您對邏輯的“更新”意味着變量== true或false。 這對於所有情況都不正確(它可能在某些情況下有效,但我把它們扔掉了,因為它不是一般情況)。 您使用“NONE”邏輯測試的是變量是否包含除NONE之外的任何內容。 類似於我上面所說的,所有“登錄功能”正在做的是確定用戶是否傳遞了任何東西,而不是值是否有效,是否等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.