繁体   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