链接或运算符
在测试几个相等比较中的任何一个时:
if a == 3 or b == 3 or c == 3:
很容易将其缩写为
if a or b or c == 3: # Wrong
这是错的; or
运算符的优先级低于 ==
,因此表达式将被计算为 if (a) or (b) or (c == 3):
。正确的方法是明确检查所有条件:
if a == 3 or b == 3 or c == 3: # Right Way
或者,可以使用内置的 any()
函数代替链式 or
运算符:
if any([a == 3, b == 3, c == 3]): # Right
或者,为了提高效率:
if any(x == 3 for x in (a, b, c)): # Right
或者,为了缩短它:
if 3 in (a, b, c): # Right
在这里,我们使用 in
运算符来测试值是否存在于包含我们要比较的值的元组中。
同样,写入也不正确
if a == 1 or 2 or 3:
应该写成
if a in (1, 2, 3):