Python_短路计算.md
- 一、概述
- 二、原理说明
- 三、and的短路应用
- 四、or的短路应用
一、概述
Python中,短路计算(Short-circuit evaluation)指的是在布尔运算(and
或 or
)中,当根据已有的条件能够确定整个表达式的最终结果时,剩余的条件将不再被评估。这也被称为"最小求值"(Minimal Evaluation)。
短路计算可以用来将多次条件判断写在一行内,使代码变得简洁优雅。
二、原理说明
and
布尔计算中,遇到一个False
立即停止;or
布尔计算中,遇到一个True
立即停止
示例:
# 定义True函数和False函数
def checkTrue(param):print(f'checkTrue return True, param={param}')return True
def checkFalse(param):print(f'checkFalse return True, param={param}')return Falseif checkFalse('1<x<10') and checkTrue('a1') and checkTrue('b1'):print(f'and end. result={True}')
else:print(f'and end. result={False}')if checkTrue('1<x<10') or checkFalse('a1') or checkFalse('b1'):print(f'or end. result={True}')
else:print(f'or end. result={False}')
# 执行结果,可以见到and的第2、3个条件判断未执行、pr的第2、3个条件判断也未执行
checkFalse return True, param=1<x<10
and end. result=False
checkTrue return True, param=1<x<10
or end. result=True
三、and的短路应用
示例:
给定一个下标idx和一个值val,判定列表nums的第idx个元素是否等于val
def checkVal(nums, idx, val):return 0<=idx<len(nums) and nums[idx]==val
四、or的短路应用
示例:
给定一个下标idx和一个值val,判定列表nums的第idx个元素是否等于val
def checkVal(nums, idx, val):return not (idx<0 or idx>=len(nums) or nums[idx]!=val)
may the odds be ever in your favor ~