为什么这个条件表达式不会生成SyntaxError?

时间:2017-09-13 04:58:36

标签: python if-statement syntax-error conditional

当"如果"与"或"结合,一个Python首先优先考虑: 例如:

if a == b or c

(a == b) or c还是a == (b or c)。 我认为正确的逻辑形式应该是前者,但我不小心使用了:

if gender == "m' or "M" 

令我惊讶的是,它没有产生任何错误并达到了目的。

1 个答案:

答案 0 :(得分:0)

来自documentation

  

下表总结了Python中的运算符优先级   最低优先级(最少绑定)到最高优先级(大多数   结合)。

lambda
if – else 
or    
and
not x 
in, not in, is, is not, <, <=, >, >=, !=, ==  
...

所以,回答你的问题,

a == b or c

相当于

(a == b) or (c)

代码if gender == "m" or "M"的工作方式如下:gender == 'm"?如果是,则结果为True。否则,测试&#34;真实性&#34; "M"。是"M"&#34;是&#34;?如果是,结果是真的。要了解其工作原理,您应该知道所有对象都具有与之相关的真实性。所有非零整数,非空字符串和数据结构都是True00.0''NoneFalse[]{}set()都是{ {1}}。

有关详细信息,请访问How do I test one variable against multiple values?