簡體   English   中英

python:如果不是這個而不是那個

[英]python: if not this and not that

我想寫一個條件來檢查兩個變量是否都是False但是我不確定我使用的是否正確:

if not var1 and not var2: 
     #do something 

或應該是:

if not (var1 and var2):
    #do something

這被稱為德摩根定律 (not A) and (not B)相當於not (A or B) ,而(not A) or (not B)相當於not (A and B)

從技術上講,使用后者的速度要快一些,例如not (A and B) ,因為解釋器評估的邏輯語句較少,但這很簡單。 使用邏輯結構,允許您根據具體情況盡可能清楚地說明條件。

if not (var1 and var2)等於if not var1 or not var2那么你的條件就不一樣了。

哪一個是正確的取決於您的業務邏輯。

首先是你想要的。 它檢查兩個變量都是False 第二個只檢查var1 and var2是否為False ,這意味着它們不是同時為True ; 一個可能是True而另一個可能是False ,第二個if會返回True

你的第一個例子相當於

if not any((var1, var2)): ...

而你的第二個相當於

if not all((var1, var2)): ...

這些變體可能更好地代表潛在問題。

如果他們這樣做,請使用它們。

你應該使用第一個例子,它更像Pythonic。

另外,你的第二個例子是有缺陷的。 如果你的一個變量是True,那么它將失敗,另一個變量為False。

暫無
暫無

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

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