今天编程时遇到一个坑,写下此篇记录一下
在if判断语句中,有and 和 or 一起时,优先级and比or更高,例如:
x or y and z 等价于x or (y and z),代码如下:
x = True
y = False
z = False
print('x or y: ',x or y) # True
print('y and z: ',y and z) # False
print('x or y and z: ',x or y and z) # True
print('(x or y) and z: ',(x or y) and z) # False
print('*'*20)
if x or y and z:
print('yes')
else:
print('no')
运行结果:
x or y: True
y and z: False
x or y and z: True
(x or y) and z: False
********************
yes
附上运算符优先规则表,整理自runoob
python中运算符的优先规则:
| 运算符 | 描述 |
|---|---|
| ** | 指数,优先级最高 |
| ~, +, - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
| *, /, %, // | 乘,除,求余数和取整除 |
| + - | 加法减法 |
| >>, << | 右移,左移(位运算符) |
| & | ‘AND’(位运算符) |
| ^ | 位运算符 |
| <=, <, >, >= | 比较运算符 |
| ==, != | 等于运算符 |
| =, %=, /=, //=, -=, +=, *=, **= | 赋值运算符 |
| is ,is not | 身份运算符 |
| in, not in | 成员运算符 |
| not, and, or | 逻辑运算符 |
pass~
本文记录了在Python编程中遇到的一个关于逻辑运算符and和or优先级的误区。通过实例代码解释了and的优先级高于or,避免在条件判断中出现预期之外的结果。附带提供了Python运算符优先级表,帮助读者理解和掌握正确的运算规则。
3178

被折叠的 条评论
为什么被折叠?



