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

求掌握 Python 语言,今年年初这一数字还只是 18.5%。

Python 流行的原因在于其拥有非常直观的能力:这门语言拥有大量的库、足够高的生产效率,还相对易于学习。2020年 10 月,

Python 的 3.9 版正式发布了,从字典更新 / 合并到添加新的字符串方法,再到 zoneinfo 库的引入,Python 3.9 添加了许多新特

性.

Python3.10 的第二个 alpha 版本也已于2020年 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 语句纳入其中。

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

Python学习交流Q群:903971231####906715085(已满)
with (CtxManager1() as example1,CtxManager2() as example2,CtxManager3() as example3,
):...

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

建议:

PEP 634 结构模式匹配:模式匹配允许用户在 match 后面跟随数个 case 语句。当在程序执行 match-case 时,有匹配的语句,

程序就会进入相应的 case 语句来执行操作。

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

Python学习交流Q群:903971231##906715085(已满)###
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,为开发者提供了另一种选择。

【Python】switch语法你真的懂吗相关推荐

  1. python切片语法-彻底搞懂Python切片操作

    在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任意切取目 ...

  2. 假装Python高手,你真的懂属性描述符类!

    Python学了好几年,发现功力还是那样,很多同学经常这样抱怨!都说Python入门容易,精通难,确实是这样的,每当我们打开一些牛逼的源码框架,进去看窥探大牛的源码,比如Python里面非常著名的Dj ...

  3. 想学python编程-想学Python编程?你真的适合吗?

    原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...

  4. python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...

    image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...

  5. 哪个专业学python语言_想学Python编程?你真的适合吗?

    原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...

  6. 语法和c区别_【20200925】Python基本语法

    介绍 介绍 Python这种脚本语言福哥已经给大家介绍过了,现在童鞋们应该已经会安装python的开发环境了,接下来我们需要针对python语言进行一个系统的学习. 首先学习一门编程语言最先要学习的是 ...

  7. python输入语句没有定义_【20200925】Python基本语法

    介绍 介绍 Python这种脚本语言福哥已经给大家介绍过了,现在童鞋们应该已经会安装python的开发环境了,接下来我们需要针对python语言进行一个系统的学习. 首先学习一门编程语言最先要学习的是 ...

  8. Python基础——第二章:Python基础语法

    前言 本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺. 不想做笔记直接来我的频道.当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程 ...

  9. Python上下文语法with小述

    Python上下文语法with小述 本文环境python3.5.2 上下文语法with 该语法糖主要便于在Python的编程过程中,能够有效管理防止编程过程中,对有关资源编程时忘记释放的问题,比如通过 ...

最新文章

  1. Java第一天学习笔记整理
  2. playsound函数Linux使用,函数PlaySound和sndPlaySound的用法
  3. 电话双音频拨码信号采集
  4. 在Asp.net中使用JQuery插件之jTip
  5. 关于wmi获取网卡mac地址重复的分析
  6. Binder源码分析之驱动层(原)
  7. Auto.js Pro如何连接VS Code插件
  8. 企业服务总线全双工异步通信机
  9. 《天天数学》连载01:一月一日
  10. 没理由不买它!小米今年最后一款旗舰发布:性价比真的高
  11. mysql 建立索引_mysql建立索引的原则
  12. 微博转发的内容如何实现点击人名跳转到个人主页
  13. Oracle数据库学习(二)
  14. php curl 及其参数
  15. Iridient Developer的设置和预设文件
  16. 麟龙指标通达信指标公式源码_麟龙指标套三 麟龙特色指标 通达信主图+副图指标 贴图...
  17. Ubuntu安装Hbase数据库
  18. Python选修课第一届Turtle绘图大赛田康林赵冰珂组
  19. android友盟自定义事件,友盟:自定义事件
  20. [BUUCTF-pwn] wdb_2018_semifinal_pwn2

热门文章

  1. Android wpa_supplicant源码分析--启动之全局初始化
  2. 最容易受到攻击者攻击的6个IT资产
  3. Java虚拟机学习整理笔记
  4. 第 1 章 一 JVM 和 Java 体系架构 (虚拟机介绍、字节码、Java跨平台性)
  5. JCU并发包原理总结
  6. 重要公告|社区批准第一批最新生态系统Grants
  7. 浙大公共管理硕士(MPA)项目的学费水平如何?
  8. QoS---拥塞管理、拥塞避免
  9. Netty学习笔记二网络编程
  10. 用html和css画一个高级可爱的兔子用作兔年表白直接可以运行的