在一个'if'语句中评估多个变量?

Rau*_*fle 15 python if-statement

假设我有一堆变量,或者是.True或者False.我想在一个if语句中评估一组这些变量,看看它们是否都是False这样的:

if var1, var2, var3, var4 == False:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

除此之外不起作用.我知道我可以这样做:

if var1 == False and var2 == False and var3 == False and var4 == False:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

但这很难看 - 特别是如果这些if语句在我的代码中会发生很多.有没有什么方法可以使用更清晰的语法进行此评估(如第一个示例)?

phi*_*hag 34

永远不== True== False应该(或)测试一个布尔变量.相反,要么写:

if not (var1 or var2 or var3 or var4):
Run Code Online (Sandbox Code Playgroud)

或使用any(及相关问题表兄弟all):

if not any((var1, var2, var3, var4)):
Run Code Online (Sandbox Code Playgroud)

或使用Python的传递性比较:

if var1 == var2 == var3 == var4 == False:
Run Code Online (Sandbox Code Playgroud)

  • `不是任何(...)`是Pythonic的方法来为"所有False"情况做这件事,而`all(...)`是针对"all True"的情况. (7认同)

Ste*_*der 7

这个怎么样:

# if all are False
if not any([var1, var2, var3, var4]):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

要么:

# if all are True
if all([var1, var2, var3, var4]):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

这些都很容易阅读,因为它们用简单的英语.