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

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.

相关推荐
热点推荐
采耳店被曝“躺采”服务,女技师身着旗袍短裙,老板朋友圈更辣眼

采耳店被曝“躺采”服务,女技师身着旗袍短裙,老板朋友圈更辣眼

飘飘视角
2024-04-18 18:22:26
“中国式”教育正在催生一个“寄生”的社会

“中国式”教育正在催生一个“寄生”的社会

妮子说美食
2024-04-18 18:30:02
李兰娟院士家族近40亿财富!刚认识她的时候,我们还坚定地支持她

李兰娟院士家族近40亿财富!刚认识她的时候,我们还坚定地支持她

杂谈哥闲谈
2024-04-18 23:55:56
“别拔管,我想活着!”甘肃56岁病人苦苦哀求,家人拒绝含泪拔管

“别拔管,我想活着!”甘肃56岁病人苦苦哀求,家人拒绝含泪拔管

王老师日常
2024-04-18 12:46:53
热议何杰事件!各方面重罚,声明暗藏玄机,大V怒斥:大快人心

热议何杰事件!各方面重罚,声明暗藏玄机,大V怒斥:大快人心

天涯沦落人
2024-04-19 17:12:35
快船G1开始前,伦纳德正式确认,卢帅给哈登提要求,哈登提前预警

快船G1开始前,伦纳德正式确认,卢帅给哈登提要求,哈登提前预警

体坛大辣椒
2024-04-19 10:21:24
快言快语!记者VS重庆燃气董事长:都是先义正辞严,最后痛哭流涕

快言快语!记者VS重庆燃气董事长:都是先义正辞严,最后痛哭流涕

大风文字
2024-04-18 18:00:35
招商银行,动刀大额存单

招商银行,动刀大额存单

市界
2024-04-19 14:48:12
上千万用户“上当”,人民日报点名“叫停”,看看你踩坑被骗了吗

上千万用户“上当”,人民日报点名“叫停”,看看你踩坑被骗了吗

记录生活日常阿蜴
2024-04-15 13:47:06
利空突袭,亚太股市齐跌!但A股今天并不弱,甚至给了很多机会

利空突袭,亚太股市齐跌!但A股今天并不弱,甚至给了很多机会

每经牛眼
2024-04-19 15:26:12
大马丁:比赛30分钟落后我却被判拖延时间,不知道裁判咋想的

大马丁:比赛30分钟落后我却被判拖延时间,不知道裁判咋想的

懂球帝
2024-04-19 04:40:32
成都业主自曝20天燃气费17290元!做顿饭300元?燃气公司回应来了

成都业主自曝20天燃气费17290元!做顿饭300元?燃气公司回应来了

洛洛女巫
2024-04-18 11:39:19
伊朗警告:这次严厉回应将是“秒回”!

伊朗警告:这次严厉回应将是“秒回”!

参考消息
2024-04-16 20:19:09
5岁儿子是前男友的,我跪下求丈夫原谅,可亲子鉴定结果让我傻眼

5岁儿子是前男友的,我跪下求丈夫原谅,可亲子鉴定结果让我傻眼

朝暮书屋
2024-04-17 11:47:36
朝鲜姑娘远嫁中国,2年后回朝鲜探亲,弟弟:回你离不开的中国

朝鲜姑娘远嫁中国,2年后回朝鲜探亲,弟弟:回你离不开的中国

辉哥说动漫
2024-04-19 12:09:24
周海媚墓地曝光!经典形象“周芷若”刻在墓碑上,环境比想象简陋

周海媚墓地曝光!经典形象“周芷若”刻在墓碑上,环境比想象简陋

鑫鑫说说
2024-04-19 10:32:03
菲律宾高层呼吁军方兵变:推翻小马科斯,菲律宾才能避免战争!

菲律宾高层呼吁军方兵变:推翻小马科斯,菲律宾才能避免战争!

乐阳聊军事
2024-04-18 13:02:34
离谱!81岁大爷花25元嫖娼,女方57岁,现场画面曝光太辣眼睛

离谱!81岁大爷花25元嫖娼,女方57岁,现场画面曝光太辣眼睛

180°视角
2024-04-18 15:14:04
中央定调:2024年70岁及以上老人可享“3项优待”,包括农民在内

中央定调:2024年70岁及以上老人可享“3项优待”,包括农民在内

天下纵览
2024-04-13 12:39:22
华为一旦突破芯片技术,就可以横扫全球高科技公司,事实是什么?

华为一旦突破芯片技术,就可以横扫全球高科技公司,事实是什么?

创作者朱海平
2024-04-19 13:04:36
2024-04-19 17:34:44
机器之心Pro
机器之心Pro
专业的人工智能媒体
8909文章数 141890关注度
往期回顾 全部

科技要闻

最沉默的李想,最便宜的理想

头条要闻

以色列袭击伊朗境内目标 外交部表态

头条要闻

以色列袭击伊朗境内目标 外交部表态

体育要闻

安息吧勇士王朝,2013-2023

娱乐要闻

北影节开幕之夜,内娱女星千娇百媚

财经要闻

围猎三丰智能的神秘基金设骗局转移资产

汽车要闻

风神L7预售 东风汽车北京车展阵容公布

态度原创

数码
家居
游戏
本地
公开课

数码要闻

Meta下一代高端VR Quest Pro 2全面前瞻:或有AI加持

家居要闻

光影浮动 色块碰撞与线条起伏的情感呼应

口碑回升!《面包房行动》Steam多半好评

本地新闻

春色满城关不住|千阳春日限定美景上线了!

公开课

睡前进食会让你发胖吗?

无障碍浏览 进入关怀版