给定布尔变量值,判断表达式完全/短路求值的问题咨询
布尔表达式完全求值判断分析
已知变量取值
a = True b = False
核心规则
先明确Python的短路求值逻辑:
and:左操作数为False时直接返回结果,无需计算右操作数;左操作数为True时必须计算右操作数(即完全求值)or:左操作数为True时直接返回结果,无需计算右操作数;左操作数为False时必须计算右操作数(即完全求值)not是单目运算符,仅作用于单个操作数,不存在短路问题
逐个表达式判断
not a or b
先计算not a得到False,or的左操作数是False,必须计算右操作数b,所以是完全求值(你的原判断错误)a and b
左操作数a是True,必须计算右操作数b,所以是完全求值(你的原判断正确)a or b
左操作数a是True,直接返回结果,不会计算b,所以是短路求值(你的原判断正确)not a and b(修正笔误后)
先计算not a得到False,and的左操作数是False,直接返回结果,不会计算b,所以是短路求值(你的原判断错误)b and a
左操作数b是False,直接返回结果,不会计算a,所以是短路求值(你的原判断正确)b or a
左操作数b是False,必须计算右操作数a,所以是完全求值(你的原判断正确)
内容的提问来源于stack exchange,提问作者Kondwani Paul Kufeyani
相关产品推荐
相关产品推荐

