Python 3.10 尝鲜

图源:giaiphapso.com

Python 3.10 版本已经在本月初(10.4)正式发布,其中最让人振奋的新特性是模式匹配,简单的说就是Python终于引入了类似于switch...case的语句,当然实际功能和效果要比那个强大的多。

下面就是我迟来的Python 3.10尝鲜报告。

下载&&安装

3.10版的官方下载地址是这里

选择需要的版本就好,我下载的是Windows installer (64-bit)。

安装包推荐自定义安装,这里我选择安装的目录是之前安装的3.9版本的目录,进行覆盖安装。

通过命令行验证安装成功:

❯ python --version
Python 3.10.0

模式匹配

3.10最显著的新特性是模式匹配,这点在知乎有很多人讨论,该功能相关的PEP有三个:

  • PEP 634 – Structural Pattern Matching: Specification
  • PEP 635 – Structural Pattern Matching: Motivation and Rationale
  • PEP 636 – Structural Pattern Matching: Tutorial

其中PEP-634是模式匹配语法的完整规范,PEP-635是解释为什么需要引入模式匹配,PEP-636是模式匹配的新手教程。用整整三篇PEP来阐述一个新特性,可见其重要性和社区的期待。

我已经翻译了其中的PEP-634和PEP-636,译文见:

  • [PEP 634 – Structural Pattern Matching: Specification](https://github.com/icexmoon/PEP-CN/blob/main/peps/PEP 634 – Structural Pattern Matching Specification.md),结构化模式匹配:规范
  • [PEP 636 – Structural Pattern Matching: Tutorial](https://github.com/icexmoon/PEP-CN/blob/main/peps/PEP 636 – Structural Pattern Matching Tutorial.md),结构化模式匹配:教程

如果访问Github不便,推荐使用**dev-sidecar**或访问该PEP翻译项目在Gitee上的镜像PEP-CN

现在啥也不说了,直接撸代码试试。

先来试试最常见的switch...case式的代码:


def player_test(player):match player:case 'customer':print('you are a customer player')case 'icexmoon':print('you are god')case _:print('you are a hacker')player_test('icexmoon')
player_test('xiao min')
player_test('customer')
# you are god
# you are a hacker
# you are a customer player

非常简洁,不需要写breakdefault,当然,不要忘记在结尾写case _

当然,对于模式匹配来说这只是小case,其能做的远远超过普通的switch...case

比如直接匹配序列,并捕获其中的变量:

persons = [['Xiao Ming',16],['Han Meimei', 20],['Li Xiang', 15]]
for person in persons:match person:case 'Li Xiang', age:print("The boy's name is Li Xiang, and his age is {}".format(age))case name, age:print("{}'s age is {}".format(name, age))case _:pass
# Xiao Ming's age is 16
# Han Meimei's age is 20
# The boy's name is Li Xiang, and his age is 15

在这个例子中我们通过模式匹配捕获二维列表中的人名和年龄,并且对其中Li Xiang进行特殊对待,输出与其他人不同的信息。

当然模式匹配还有更多的功能,这里不一一展示,详情请见前边列出的相关PEP。

Python 3.10 尝鲜相关推荐

  1. android11 rom,小米打造基于安卓11的ROM来了:米10尝鲜

    原标题:小米打造基于安卓11的ROM来了:米10尝鲜 据XDA报道,距离Android 11正式版发布还有几天时间,9月8日正式面向Pixel 2.Pixel 3.Pixel 4和Pixel 3a等机 ...

  2. 小米Android rom,小米打造基于安卓11的ROM来了:米10尝鲜

    原标题:小米打造基于安卓11的ROM来了:米10尝鲜 据XDA报道,距离Android 11正式版发布还有几天时间,9月8日正式面向Pixel 2.Pixel 3.Pixel 4和Pixel 3a等机 ...

  3. python wasm_Python-pywasm-美味尝鲜

    Pywasm: Python 爱上 Wasm, 美味尝鲜! pywasm 是一个使用纯 Python 实现的 WebAssembly 解释器. 您可以使用如下命令来安装它: $ pip3 instal ...

  4. 【Python】利用Conda尝鲜Python 3.10

    1 简介 就在几天前,Python3.10的第一个正式版本3.10.0发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们得以一睹其正式加入的诸多新特性. 本 ...

  5. 利用Conda尝鲜Python 3.10

    来自公众号:Python大数据分析 1 简介 就在几天前,Python3.10的第一个正式版本3.10.0发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们 ...

  6. 利用 Conda 尝鲜 Python 3.10 不一样的特性 快来试试

    1 简介 就在几天前,Python3.10的第一个正式版本3.10.0发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们得以一睹其正式加入的诸多新特性. 本 ...

  7. 利用 Conda 尝鲜 Python 3.10

    1 简介 就在几天前,Python3.10的第一个正式版本3.10.0发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们得以一睹其正式加入的诸多新特性. 本 ...

  8. 小米10谷歌连携失败_Android 11 喜讯!小米 10 率先尝鲜,官方刷机包发布下载

    6月15日消息,小米MIUI官方今天宣布Android11Beta1来了,小米10系列手机率先尝鲜体验,MIUI官方还表示"欢迎开发者进行体验",基于Android11Beta1底 ...

  9. 尝鲜体验 VS Code Python 原生 Jupyter Notebook 支持

    9 月 21 日,PyCon China 2019 在上海举办.微软的 VS Code 发布了原生的Juypter Notebook 支持. 虽然要等到月底 Marketplace 里面才会正式更新, ...

最新文章

  1. pointnet 结果可视化_PointNet论文复现及代码详解
  2. 按需生产 ,我们准备好了吗?
  3. matlab位运算函数
  4. pr如何处理音效_学视频剪辑 PR通关教学课程 教程
  5. GB2312 UTF8 UCS2汉字编码对应表
  6. 十年磨一剑 | 淘宝如何打造承载亿级流量的首页?
  7. 函数指针与指针函数(C++工厂设计最喜欢用这个)
  8. loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】
  9. ASIHTTPRequest类库简介
  10. 文本数据标注工具Doccano
  11. python字典功能默写_新华字典APP每天只能免费查两字,完整版卖40元!网友嫌贵...
  12. Camtasia如何给视频或者图片调色
  13. 电子商务平台如何给商户结算?
  14. diy无感无刷电机霍尔安装_永磁无刷直流电机霍尔位置传感器的安装
  15. 添加网络计算机后打印乱码,Windows7系统打印机无法打印出现乱码的解决方法
  16. 首先下载安装data.table包_首次揭秘“超级签”与企业包行业内幕
  17. 程序员吐槽_程序员在地铁上写代码被路人吐槽:有什么好装的!网友评论炸锅了!...
  18. 【转】网站流量UV是什么意思?什么是流量UV?
  19. 编写高质量代码:改善Java程序的151个建议(第9章:多线程和并发___建议125~131)
  20. vue遍历map对象

热门文章

  1. META-INF/MANIFEST.MF介绍
  2. 第9章 更复杂的光照
  3. atoi和strtol的区别和使用
  4. 【挑战】手机Termux搭建React Native开发环境
  5. 博客主题用腻了?来试试赛博朋克 2077 主题吧!
  6. flutter 真机iOS字体偏小
  7. 小米android系统分享,重温的手机分享 篇一:90hz高刷?45w快充?双扬声器?你不知道的酷安重制版小米9魔改教程...
  8. 多年炒股心得体会(转)
  9. 本周推荐 | 基于 canvas 实现 H5 丝滑看图体验
  10. 避免使用虚函数作为库的接口