Skip to main content
 首页 » 编程设计

python之如何评估具有多个条件的条件语句

2025年05月04日25cloudgamer

我希望以相同的方式评估以下两个代码块,但情况似乎并非如此。例如,用这个:

if True or False and False: 
    print('True')                                                                
else:                                                                            
    print('False') 

True 被打印出来。但是有了这个:

if (True or False) and False: 
    print('True') 
else:                                                                            
    print('False') 

False 被打印出来。这是我的逻辑分解:

  • 对或错 = True
  • 真假 = 假

通过替换,(True or False) and False = True and False = False。

为什么会这样?

请您参考如下方法:

这是因为 operator precedence .根据 Python 2.x 和 3.x 文档,and 运算符的优先级高于 or 运算符。另外,看看 bool 真值表:

这意味着在你的表达中:

if True or False and False: 

在表达式中,False 和 False 根据优先级组合在一起。这意味着 Python 将其评估为:

if True or (False and False): 

现在,它是从左到右求值的。由于第一个条件是 True,它会短路并跳过第二个条件并评估为 True 打印“True”。 (这短路是因为如果第一边为真,它必须为真。)

现在在你的第二个例子中:

if (True or False) and False: 

这使得 True or False 首先求值,它给出 True。然后它执行 True and False,即 False,打印“False”。

>>> print(True or False) 
True 
>>> print(True and False) 
False