网易首页 > 网易号 > 正文 申请入驻

Python 3.10来了,switch语法终于出现

0
分享至

  机器之心报道

  编辑:陈萍

不用再自己琢磨如何实现 switch 功能了。

  对于从事数据科学和人工智能领域的人们来说,Python 是大家的首选编程语言。根据最近的一项调查,27% 的程序员开发职位要求掌握 Python 语言,今年年初这一数字还只是 18.5%。

  Python 流行的原因在于其拥有非常直观的能力:这门语言拥有大量的库、足够高的生产效率,还相对易于学习。去年 10 月,Python 的 3.9 版正式发布了,从字典更新 / 合并到添加新的字符串方法,再到 zoneinfo 库的引入,Python 3.9 添加了许多新特性.

  Python3.10 的第二个 alpha 版本也已于去年 11 月初发布,相比于不久前发布的 3.9 版本,新版本对类型注释扩展、zip、位计数、字典映射又有了新的改进。就在昨天,Python 3.10 beta 版发布了,新的 beta 版最大的亮点可能就是引入了 switch-case 语句。

  Python 3.10 beta 版新改进

  Switch 语句存在于很多编程语言中,但 Python 编程语言不支持 Switch 语句。早在 2016 年,PEP 3103 就被提出,建议 Python 支持 switch-case 语句。然而,在调查中发现很少人支持该特性,Python 开发人员放弃了它。

  时间在推到 2020 年,Python 的创始人 Guido van Rossum,提交了显示 switch 语句的第一个文档,命名为 Structural Pattern Matching,见 PEP 634 。

  如今,随着 Python 3.10 beta 版的发布,终于将 switch-case 语句纳入其中。

  带圆括号的上下文管理器:现在支持在上下文管理器中跨多行使用括号进行延续。也可以在所包含组的末尾使用逗号。

  with ( CtxManager1() as example1, CtxManager2() as example2, CtxManager3() as example3,): ...

  错误消息 - NameErrors:当打印由 interpreter 引发的 NameError 时,PyErr_Display() 将在引发异常的函数中提供相似变量名的建议:

  PEP 634 结构模式匹配:模式匹配允许用户在 match 后面跟随数个 case 语句。当在程序执行 match-case 时,有匹配的语句,程序就会进入相应的 case 语句来执行操作。

  match-case 语法和操作:模式匹配的通用语法是:

  match subject: case : case : case : case _:

  match 语句接受一个表达式,并将其值与一个或多个 case 块给出的连续模式进行比较。match-case 示例如下:

  http_code = "418"match http_code: case "200": print("OK") do_something_good() case "404": print("Not Found") do_something_bad() case "418": print("I'm a teapot") make_coffee() case _: print("Code not found")

  下图是 match-case 语句执行示意图。程序会检查多个 case 条件,并根据在变量 http_code 中找到的值执行不同的操作。

  同样的,你也可以使用一组 if-elif-else 语句来构建相同的逻辑:

  http_code = "418"if http_code == "418": print("OK") do_something_good()elif http_code == "404": print("Not Found") do_something_bad()elif http_code == "418" print("I'm a teapot") make_coffee()else: print("Code not found")

  然而,通过使用 match-case 语句,删除了 http_code == 的重复执行,当测试许多不同的条件时使用 match-case,http_code == 看起来更加清晰。

  我们可以通过一个简单的例子来了解模式匹配:用 C、Java 或 JavaScript(以及许多其他语言)中的 switch 语句将对象(数据对象)与文本(模式)进行匹配。switch 语句通常用于将对象 / 表达式与包含文字的 case 语句进行比较。

  虽然使用嵌套 if 语句的命令式指令系列可以用来完成类似于结构模式匹配的任务,但它不如声明式方法那么清晰。相反,声明性方法声明了匹配所需满足的条件,并且通过其显示模式更具可读性。虽然结构模式匹配可以以最简单的形式使用,将变量与 case 语句中的文本进行比较,但它对 Python 的真正价值在于它对对象类型和大小的处理。

  match-case 可以说是此次 Python 3.10 beta 版本最大的亮点。对于这种表达方式,有人喜欢,有人憎恶。在 Python 还不支持 switch-case 之前,大家可能都是使用字典进行相关操作。有人说 switch 除了读着方便,没什么优点;还有人说 Python 的闭包机制,dict 的 value 可以是带闭包的函数,这样就使得表达能力比 switch-case 更上一层楼;但总归 Python 3.10 beta 版本纳入了 switch-case,为开发者提供了另一种选择。

  更多详细信息,请参考:https://docs.python.org/3.10/whatsnew/3.10.html

  参考链接:
https://towardsdatascience.com/switch-case-statements-are-coming-to-python-d0caf7b2bfd3

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
世乒赛最新战报!国乒又爆大冷,日本队也在输球,16强名单已诞生

世乒赛最新战报!国乒又爆大冷,日本队也在输球,16强名单已诞生

以茶带书
2026-05-05 17:03:19
中国机器人在美“出差”买票坐飞机:坐靠窗位,电池超标致航班延误,现场表演逗乐乘客

中国机器人在美“出差”买票坐飞机:坐靠窗位,电池超标致航班延误,现场表演逗乐乘客

红星新闻
2026-05-04 15:44:20
事发在广州一小区楼顶,涉事业主态度太强硬了,还装上了监控!

事发在广州一小区楼顶,涉事业主态度太强硬了,还装上了监控!

小南看城市
2026-05-06 10:02:25
疑似坠亡的金建希案法官:被评价坚持原则,曾获评优秀法官,公休日清晨上班到出事前

疑似坠亡的金建希案法官:被评价坚持原则,曾获评优秀法官,公休日清晨上班到出事前

红星新闻
2026-05-06 12:14:13
向涵之,静态美

向涵之,静态美

东方不败然多多
2026-05-06 12:24:17
1987年法国影星阿兰德龙访华时,与中国演员们的珍贵合影。

1987年法国影星阿兰德龙访华时,与中国演员们的珍贵合影。

草莓解说体育
2026-05-06 08:37:32
康熙长子被圈禁26年,疯狂纳妃生下20个孩子,却因祸得福成赢家

康熙长子被圈禁26年,疯狂纳妃生下20个孩子,却因祸得福成赢家

浩渺青史
2026-05-06 00:41:01
新款不知火舞性感手办推出!前凸后翘难以抵挡!

新款不知火舞性感手办推出!前凸后翘难以抵挡!

游民星空
2026-05-03 23:45:02
广西砸 7.99 亿建超级妇幼医院,20 层地标 2029 年投用

广西砸 7.99 亿建超级妇幼医院,20 层地标 2029 年投用

阿芒娱乐说
2026-05-06 12:01:33
赖清德返台当天,萧美琴向大陆叫板,鲁比奥最新表态,民进党要急

赖清德返台当天,萧美琴向大陆叫板,鲁比奥最新表态,民进党要急

尘世闲云
2026-05-06 11:55:48
真正的神雕,活人演的神雕

真正的神雕,活人演的神雕

远方青木
2026-05-03 23:17:40
比恒大还惨!中国第二大民企倒了,负债7500亿,创始人被带走

比恒大还惨!中国第二大民企倒了,负债7500亿,创始人被带走

芳芳历史烩
2025-12-25 20:32:52
亏损超1.5亿!《寒战1994》票房崩塌,我感慨:这块金字招牌砸了

亏损超1.5亿!《寒战1994》票房崩塌,我感慨:这块金字招牌砸了

靠谱电影君
2026-05-05 10:40:44
安切洛蒂全说中了!皇马 3 年前的错误决定,如今赔上了整个王朝

安切洛蒂全说中了!皇马 3 年前的错误决定,如今赔上了整个王朝

澜归序
2026-05-06 00:32:09
张凌赫田曦薇爆假戏真做,他5月份录微博竟模仿她这3句话,全网嗑翻

张凌赫田曦薇爆假戏真做,他5月份录微博竟模仿她这3句话,全网嗑翻

小椰的奶奶
2026-05-06 15:43:57
湖人又伤一员大将!吓得雷霆球员不敢看,赛季报销,或被卸磨杀驴

湖人又伤一员大将!吓得雷霆球员不敢看,赛季报销,或被卸磨杀驴

你的篮球频道
2026-05-06 15:09:16
郑丽文高调访美,反对统一?大陆划下两条红线,她的小算盘打错了

郑丽文高调访美,反对统一?大陆划下两条红线,她的小算盘打错了

天气观察站
2026-05-06 10:34:07
林诗栋回应小组赛状态:比赛强度远超想象,庆幸有淘汰赛机会

林诗栋回应小组赛状态:比赛强度远超想象,庆幸有淘汰赛机会

懂球帝
2026-05-05 19:39:09
吴宜泽夺冠,最激动的除卖房托举他的父母,还有敢扑进他怀里的她

吴宜泽夺冠,最激动的除卖房托举他的父母,还有敢扑进他怀里的她

一娱三分地
2026-05-06 14:40:32
忠告所有工程人:现在的工程,90%都是钓鱼局!

忠告所有工程人:现在的工程,90%都是钓鱼局!

小鹿姐姐情感说
2026-05-06 00:13:45
2026-05-06 16:15:00
机器之心Pro incentive-icons
机器之心Pro
专业的人工智能媒体
12925文章数 142643关注度
往期回顾 全部

科技要闻

“马斯克不懂AI”:OpenAI当庭戳老底

头条要闻

世界杯FIFA给中国开出天价版权费 电视转播谈判陷僵局

头条要闻

世界杯FIFA给中国开出天价版权费 电视转播谈判陷僵局

体育要闻

活塞1比0骑士:坎宁安不再是一个人了

娱乐要闻

神仙友谊!杨紫连续10年为张一山庆生

财经要闻

人形机器人七小龙:谁真能卖 谁在讲故事?

汽车要闻

领克10/领克10+ 无论能源形式 领克都要快乐

态度原创

亲子
游戏
艺术
房产
手机

亲子要闻

总结了一些锻炼“大脑前额叶”的小方法,孩子真的越来越聪明了!

《生肖山》登陆Steam牌组构建游戏节

艺术要闻

震撼!康斯坦丁摄影作品里的性感曲线让人惊艳!

房产要闻

五一楼市彻底明牌!塔尖人群都在重仓凯旋新世界

手机要闻

华为官宣海外新品发布会:5月7日举办,将推出nova 15 Max

无障碍浏览 进入关怀版