php中文网

Python 复合条件表达式中的短路

php中文网

本文介绍了 python 复合条件表达式中的短路求值如何通过在结果确定后立即停止求值来提高效率。


要理解 python 中复合条件表达式中的短路概念,熟悉逻辑运算符“and”和“or”非常重要。下表总结了这些运算符的逻辑结果。

表 1
“与”和“或”运算符

注意:来自模块 3:了解 python 决策控制结构,its320:基础编程,科罗拉多州立大学全球分校,2024 年。2024 年 2 月 25 日修改。

在 python 中,复合条件表达式上下文中的短路是指一旦逻辑表达式结果确定,解释器就停止计算逻辑表达式(severance,2016)。

换句话说,在读取逻辑表达式的过程中,如果解释器在到达表达式末尾之前就可以确定表达式的结果,则会停止读取表达式。注意:解释器是从左到右读取的.

在表达式中使用运算符“”和“”时会发生这种情况。这称为短路布尔评估。 (hrehirchuk 等人,2024)

立即学习“Python免费学习笔记(深入)”;

例如:

使用“and”运算符时:

a = 1
b = 2
c = 3
d = 4
if a < b and a > c and a < d:
              #--- do something

当 python 解释器在步骤 a > c 停止计算逻辑表达式 a c 以及 c 返回 false。因此,表达式 a c 和 a false,表达式 a false 或 true 并不重要.

使用“或”运算符时:

a = 1
b = 2
c = 3
d = 4

 if a > b or a < c or a > d:
            #--- Do something

当 python 解释器在步骤 a b 或 a d 时,就会发生短路,因为 b 或 a d 是 true,表达式 a> d 返回 falsetrue 并不重要。

当使用“and”和“or”逻辑运算符的组合时,and 运算符优先于 or 运算符。这类似于“ ”和“”之间的算术运算符优先级,其中“”优先于“ ”。下表描述了使用括号的逻辑运算符的优先级。

表 2
逻辑运算符的优先级

注:摘自第 40 章布尔表达式和短路运算符 — 逻辑运算符的优先级,作者:kjell,n.d. 2024 年 2 月 25 日修改。

总之,当逻辑运算符 and 和 or 决定 python 解释器在结果明确后何时停止计算表达式时,就会发生短路。例如,当使用运算符 'and' 时,它会在第一个 false 处停止计算,而当使用运算符 'or' 时,它会在第一个 true 处停止,这提高了效率。因此,理解 python 中的短路求值对于编写高效且有效的条件表达式至关重要。


参考文献:

科罗拉多州立大学全球(2024)。 模块 3:理解 python 决策控制结构,its320:基础编程。 https://csuglobal.instructure.com/courses/88479/pages/module-3-overview?module_item_id=4620787

hrehirchuk, m.、chalmers, e.、curtis, c. 和 perri, p.(2024 年,1 月 30 日)。 5.11 短路评估。 python 编程基础:函数优先。符石学院。 https://runestone.academy/ns/books/published/foppff/conditionals_short-circuit-evaluation.htmllinks 到外部站点。

kjell,b.(日期不详)。第40章布尔表达式和短路运算符。 逻辑运算符的优先级。使用 java 介绍计算机科学。中央康涅狄格州立大学。 https://chortle.ccsu.edu/java5/notes/chap40/ch40_16.htmllinks 到外部站点。

severance, c.(2016 年,7 月 5 日)。 4.8.逻辑表达式的短路求值。_python for every-body-interactive_。符石学院。 https://runestone.academy/ns/books/published/py4e-int/conditional/shortcircuit.html

__

最初于 2024 年 8 月 19 日发表于 short-circuit in python’s compound conditional expressions - medium。

以上就是Python 复合条件表达式中的短路的详细内容,更多请关注php中文网其它相关文章!