开发者(KaiFaX)

面向全栈工程师的开发者
专注于前端、Java/Python/Go/PHP的技术社区

来源:机器之心

正文

不用再自己琢磨如何实现 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

你还有什么想要补充的吗?


1. 回复“m”可以查看历史记录;

2. 回复“h”或者“帮助”,查看帮助;

开发者已开通多个技术群交流学习,请加若飞微信:1321113940  (暗号k)进开发群学习交流

说明:我们都是开发者。视频或文章来源于网络,如涉及版权或有误,请您与若飞(1321113940)联系,将在第一时间删除或者修改,谢谢!

开发者:KaiFaX

面向全栈工程师的开发者
专注于前端、Java/Python/Go/PHP的技术社区

Python 3.10来了,switch语法终于出现相关推荐

  1. 【Python】switch语法你真的懂吗

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

  2. Python 3.10来了!!!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器之心 编辑丨极市平台 导读 不用再自己琢磨如何实现 swi ...

  3. python 3.10 新增 switch-case 简介

    目录 01 通用语法 02 在元组中运用 03 类(class) 04 if 子句模式 05 复杂模式和通配符 01 通用语法 Switch 语句存在于很多编程语言中,早在 2016 年,PEP 31 ...

  4. Python 3.10 尝鲜

    Python 3.10 尝鲜 图源:giaiphapso.com Python 3.10 版本已经在本月初(10.4)正式发布,其中最让人振奋的新特性是模式匹配,简单的说就是Python终于引入了类似 ...

  5. python 3.10 的新特性用不到,你来打我!!!

    文 | 某某白米饭 来源:Python 技术「ID: pythonall」 python 3.10 已经在 10月 4 号发布了,这次更新了错误语法提示对 python 新手更加友好.好几个新的特性非 ...

  6. 刚刚,Python 3.10 正式发布了,我发现了一个可怕的功能..

    就在( 2021年10月4日) Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 了吧?也就是大家所熟悉的 switch-case ,写错了不好 ...

  7. Python 3.10的几个好用的新特性

    来源:Deephub Imba本文约1200字,建议阅读5分钟 本文为你介绍Python 3.10新的有用的特性. 3.10版没有添加新的模块,但是引入了很多新的并且有用的特性.让我们来一起看看吧. ...

  8. 【Python】刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...

    就在2021年10月4日, Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 了吧?也就是大家所熟悉的switch-case,写错了不好意思,是 ...

  9. 刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...

    " 阅读本文大概需要 8 分钟. " 就在前几天( 2021年10月4日) Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 ...

最新文章

  1. MyBatis(增删改查)
  2. python调用hive与java调用区别_Python操作Hive的两种方法总结
  3. CentOS 6 安装Hadoop 2.6 (一)准备工作
  4. java java 检查型异常_如何整合Java中的有效性检查和异常抛出?
  5. Redis 系列之CentOS下Redis的安装
  6. 【转】Google Chrome浏览器调试
  7. vue使用a标签下载文件_Vue a标签实现点击下载,下载图片、txt文件,不是直接打开的方式...
  8. php添加页脚,WordPress网站页脚footer.php修改图文教程
  9. win10系统添加打印机
  10. 采众家之长 凯翔软件定义存储能够后来居上吗?
  11. 理想电压源和理想电流源
  12. PERT 活动图 关键路径
  13. 【KMP】OKR-Periods of Words
  14. 可折叠设备的桌面模式
  15. 《权威指南》笔记 - 8.8函数式编程
  16. 在线生成图片大全——绝对经典
  17. 【前端三剑客】JavaScript 网页脚本语言(AJAX)
  18. composer install 出现的问题
  19. 百钱买百鸡问题java_Java版百钱买百鸡
  20. 扫地机器人如何才能避障不“智障”?五种主流的避障技术解析

热门文章

  1. 7-3 JAVA-水仙花数 (20 分)
  2. Dreamhost 又掉链子了一回
  3. C语言对文件的读取和写入操作代码
  4. 这50款前端热门工具简直不要太好用了!
  5. 推荐一款免费的文件夹加密软件 Free Encrypt Folder 加密耗子
  6. 在职人员学历提升有哪几种方式?
  7. 对于互联网行业,学历真的重要吗?
  8. Jetpack Compose之手写分享页面
  9. 常见的视觉错觉收录(不完整)
  10. 树莓派4 Raspberry Pi 4B 正式发布和配置详解