0

0

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

霞舞

霞舞

发布时间:2024-12-05 08:27:47

|

964人浏览过

|

来源于dev.to

转载

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


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

表 1
“与”和“或”运算符
Python 复合条件表达式中的短路
注意:来自模块 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 运算符。这类似于“ ”和“”之间的算术运算符优先级,其中“”优先于“ ”。下表描述了使用括号的逻辑运算符的优先级。

BibiGPT-哔哔终结者
BibiGPT-哔哔终结者

B站视频总结器-一键总结 音视频内容

下载

表 2
逻辑运算符的优先级
Python 复合条件表达式中的短路

注:摘自第 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。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1500

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

231

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

87

2025.10.17

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

443

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

544

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

73

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

197

2025.08.29

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

443

2023.08.02

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.3万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号