1 简介

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

  本文我就将带大家学习如何通过conda快速安装3.10正式版本的Python,并体验其重要的一些新特性。

2 Python 3.10正式版本重要特性一览

  如果你已经安装了conda,那么直接通过conda-forgechannel,只需要下面这一行命令即可创建新的Python3.10正式版本虚拟环境:

conda create -n py310 python=3.10 -c conda-forge -y

  完成安装之后,激活环境进入Python的shell,可以看到版本为3.10.0,离谱的是我在使用pycharm设置环境后,崭新的3.10.0环境竟然被识别为3.1(真是醉了),于是我换成用vscode进行演示:


  下面就让我们来体验其重要的一些新特性吧~

2.1 新的结构模式匹配语法

  上一次为Python引入新的语法和关键字还是async,而在这次的新版本中,引入了新的关键字matchcase,从而帮助我们得以在Python中使用到其他语言中类似switch的语法,使用方式如下面例子所示,对于match其后声明的值,后续的每个case会验证是否与其对应值相等,最后的case _中的_代表Irrefutable Pattern,相当于通配符,但是只允许置于最后一个case中:

import sys

match sys.argv[1]:
case '1':
print(1)
case '2':
print(2)
case '3':
print(3)
case _:
print('其他输入')

  match-case语法配合上通配符_,当输入容器类型的数据结构时,可以进行一些更加自由的判断:

import sys

# 1 新的结构模式匹配语法
match sys.argv[1:]:
case ['1', '2', '3']:
print('分支1')
case ['4', _, '6']:
print('分支2')
case ['7', '8', _]:
print('分支3')
case _:
print('超出已知选项!')

  更有趣的是,我们还可以使用任意自定义变量名,在match-case的作用域内辅助通配匹配,从而实现类似下面例子的效果:

import sys

# 1 新的结构模式匹配语法
match (int(sys.argv[1]), int(sys.argv[2])):
case (0, 0):
print("原点")
case (0, y):
print(f"Y={y}")
case (x, 0):
print(f"X={x}")
case (x, y):
print(f"X={x}, Y={y}")
case _:
print('输入非法!')

  类似的,针对对象的属性值,也可以进行类似的通配判断,更多用法你可以参考下面的例子进行拓展:

import sys

class Demo:
x: int
y: int demo = Demo()
demo.x = int(sys.argv[1])
demo.y = int(sys.argv[2]) # 1 新的结构模式匹配语法
match demo:
case Demo(x=0, y=0):
print("原点")
case Demo(x=0, y=y):
print(f"Y={y}")
case Demo(x=x, y=0):
print(f"X={x}")
case Demo(x=x, y=y):
print(f"X={x}, Y={y}")
case _:
print('输入非法!')

2.2 更清晰的错误提示

  在Python3.10中,针对常见的各种错误类型,执行代码后的错误提示更加明确,譬如下面是3.9与3.10针对同一种错误的错误输出信息对比:

2.3 支持括号包裹的多上下文管理器

  这个特性其实在3.9中就开始出现,在3.10中进一步得到完善,使得下面的用法合法(与3.7进行对比):

2.4 更方便的联合类型提示设置

  在之前的版本中,当我们用到多类型提示时,得这样写:

from typing import Union, string

def some_funcion(flexible_parameter: Union[int, string]) -> Union[int, string]:
return flexible_parameter

  而在3.10中,多类型联合不再必须用到Union,使用|连接即可,非常的方便:

from typing import string

def some_funcion(flexible_parameter: int | string) -> int | string:
return flexible_parameter

2.5 更加准确的错误代码行位置提示

  在Python3.10中,代码的错误提示,对于具体错误行位置的提示更加准确了:


    以上就是本文的全部内容,欢迎在评论区与我进行讨论。

最新文章

  1. When it comes to intrusion analysis and forensics
  2. Spring知识点总结大全(1)
  3. c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode
  4. android不要标题栏
  5. Django中的Model(表结构)
  6. 解决ios双击页面上移问题
  7. springMvc的注解注入方式
  8. mySQL的安装和基础使用及语法教程
  9. 错误解决:HibernateSystemException-HHH000142: Javassist Enhancement failed
  10. 如何oracle调试存储过程
  11. JAVA小白开发环境配置(编译器为Idea)
  12. 单用户实例添加DB账号
  13. UVA12253 简单加密法 Simple Encryption
  14. pip3 install mysqlclient 报错 “/bin/sh: 1: mysql_config: not found”的解决方法
  15. 【GMT43智能液晶模块】例程二:串口通信实验
  16. [NM]打开NetworkManager和wpa_supplicant的DEBUG接口
  17. Thinkphp时间转换与统计的问题
  18. JavaScript -- Form
  19. 关于print缩不缩进%有else没else的影响
  20. ★ java删除代码注释

热门文章

  1. 【AE】多表的联合查询
  2. 大数据Shell编程 之 常用正则表达式
  3. MZY项目笔记:session歧路
  4. T-SQL——关于跨库连接查询
  5. 发布日志 - kratos v2.0.5 版本发布
  6. Redis核心原理与实践--字符串实现原理
  7. 关闭Redis服务
  8. WEB漏洞——RCE
  9. java版gRPC实战之四:客户端流
  10. [第九篇]——Docker 镜像使用之Spring Cloud直播商城 b2b2c电子商务技术总结