簡體   English   中英

這個Python表達式有意義嗎?

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

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