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