Python 3.10来了!!!
点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
来源丨机器之心
编辑丨极市平台
导读
不用再自己琢磨如何实现 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 <pattern_1>: <action_1> case <pattern_2>: <action_2> case <pattern_3>: <action_3> case _: <action_wildcard>
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
点个在看 paper不断!
Python 3.10来了!!!相关推荐
- 2019学习Python的10个原因
如果你经常关注我,那你可能想知道为什么我要写一篇文章来告诉你们学习Python?但是几年前我曾向你们说过Java比Python更具有优势,哦,这就尴尬了,但确实,这几年情况有所改变,在2016年,Py ...
- 刚刚,Python 3.10 正式发布了,我发现了一个可怕的功能..
就在( 2021年10月4日) Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 了吧?也就是大家所熟悉的 switch-case ,写错了不好 ...
- 独家 | Python 3.10发布——你应该知道的五大新特性
作者:Varun Singh 翻译:欧阳锦校对:王可汗本文约1700字,建议阅读5分钟 本文为大家介绍了新版本Python的新特性. 图片来源:Canva--由Varun Singh编辑 我们都知道P ...
- Python 3.10的几个好用的新特性
来源:Deephub Imba本文约1200字,建议阅读5分钟 本文为你介绍Python 3.10新的有用的特性. 3.10版没有添加新的模块,但是引入了很多新的并且有用的特性.让我们来一起看看吧. ...
- python 3.10 新增 switch-case 简介
目录 01 通用语法 02 在元组中运用 03 类(class) 04 if 子句模式 05 复杂模式和通配符 01 通用语法 Switch 语句存在于很多编程语言中,早在 2016 年,PEP 31 ...
- 【Python】刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...
就在2021年10月4日, Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 了吧?也就是大家所熟悉的switch-case,写错了不好意思,是 ...
- 【Python】利用Conda尝鲜Python 3.10
1 简介 就在几天前,Python3.10的第一个正式版本3.10.0发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们得以一睹其正式加入的诸多新特性. 本 ...
- 利用Conda尝鲜Python 3.10
来自公众号:Python大数据分析 1 简介 就在几天前,Python3.10的第一个正式版本3.10.0发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们 ...
- Python 3.10刚发布,这5点非常值得学习!
正值国庆节期间,Python官网发布了Python3.10.0. 说实话,对于这次的升级,有几个特性,还真是值得和大家讲讲. 1. 更友好的错误提示 Python 3.10以前,它是这样提示的,你可能 ...
最新文章
- 技术人的不惑之路...... | 每日趣闻
- 【软件工程】CMMI 能力成熟度模型集成 ( 简介 | 相关术语 | CMMI 等级评估次序 )
- 自由自在进口食品最具发展潜力的黄金产业
- MVC技术的面试问题
- #翻译NO.4# --- Spring Integration Framework
- Java 0xffffffff隐式类型转换的坑
- 在 Windows 上测试 Redis Cluster的集群填坑笔记
- java厨房_JAVA环境搭建,厨房安装图文教程!
- Android应用视觉效果设计技巧
- js打开新窗口并且POST传入参数
- 联想小新锁屏壁纸怎么换_如何设置联想小新电脑锁屏时间
- 前端技术之babel转码器
- 【ajax】7.请求:请求超时与网络异常处理+取消请求+请求重复发送问题
- ubuntu20.04中安装划词翻译_Chrome翻译插件【沙拉查词】amp;【彩云小译】
- java中map和表单字符串相互转换
- 基于uniapp的校园社区小程序
- 图片,文字在线转为字符画
- 【C++】学习笔记草稿版系列10(友元)
- liunx服务器项目迁移,linux服务器数据迁移
- 【数字化项目管理规章体系建立】
热门文章
- 在ireport报错 报 jdk5找不到的解决办法
- 青少年编程竞赛交流群周报(第041周)
- 【组队学习】曹志宾:基于Python的会员数据化运营
- 资料分享:推荐一本《李宏毅机器学习》开源电子书!
- Meta 开发 AI 语音助手,用于创建虚拟世界和实时翻译
- 计算机史最疯狂一幕:豪赌50亿美元,“蓝色巨人”奋身一跃
- 16:00面试,16:08就出来了 ,问的实在是太...
- OpenAI 以 10 亿美元出售「灵魂」,网友热评不再「Open」
- 肖仰华:知识图谱构建的三要素、三原则和九大策略 | AI ProCon 2019
- 和达摩院深度绑定,阿里云下一个十年,成为“云上的阿里巴巴”