python - 条件_a 或条件_b 和条件_c 是否总是等价于(条件_a 或条件_b)和条件_c?
问题描述
总是condition_a or condition_b and condition_c
等价于(condition_a or condition_b) and condition_c
?
我周围的一些人说他们的工作方式相同,但其他人不同意,因为在某些情况下会发生短路。例如,如果condition_a
为 True,condition_a
则评估为 True,第一个终止,但第二个不终止。
然后,我对它们进行了实验。
>>> (False or True) and True
True
>>> False or True and True
True
似乎它们的工作方式相同。如果短路工作,第二个应该是假的。我想无论如何,短路评估只能同时在两个条件之间起作用,所以这意味着它们是等效的,因为False or True
首先评估然后评估False or True
和 True 的结果。听起来正确吗?
解决方案
不,and
优先级高于or
。例如,
>>> True or False and False
True
>>> (True or False) and False
False
https://docs.python.org/3/reference/expressions.html#operator-precedence的第 6.17 节 显示了运算符的优先级。
推荐阅读
- java - 理解 Drawable.Callback,invalidateDrawable 和 invalidate() 的区别
- python - 将numpy数组插入sqlite3数据库
- token - BEP20:转账金额超过限额
- java - 如何多次上传文件?
- maya - Maya 渲染设置 - 使用渲染层的名称创建集合
- javascript - 有没有办法在当前行和上一行或下一行运行 JQuery 快速搜索?
- c# - 如何按索引读/写访问 ValueTuple 成员?
- vue.js - 按下箭头按钮时如何隐藏vue-slick-carousel的边框?
- android - 可能的未处理承诺拒绝 (id:0):错误 - BLE
- spring - Mockito - 如何根据 HttpStatusCode 测试行为?