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