1 简介
就在几天前,Python3.10的第一个正式版本3.10.0发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们得以一睹其正式加入的诸多新特性。
本文我就将带大家学习如何通过conda
快速安装3.10正式版本的Python
,并体验其重要的一些新特性。
如果你已经安装了conda
,那么直接通过conda-forge
的channel
,只需要下面这一行命令即可创建新的Python
3.10正式版本虚拟环境:
conda create -n py310 python=3.10 -c conda-forge -y
完成安装之后,激活环境进入Python
的shell,可以看到版本为3.10.0,离谱的是我在使用pycharm
设置环境后,崭新的3.10.0环境竟然被识别为3.1(真是醉了),于是我换成用vscode
进行演示:
下面就让我们来体验其重要的一些新特性吧~
上一次为Python
引入新的语法和关键字还是async
,而在这次的新版本中,引入了新的关键字match
与case
,从而帮助我们得以在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('输入非法!')
在Python
3.10中,针对常见的各种错误类型,执行代码后的错误提示更加明确,譬如下面是3.9与3.10针对同一种错误的错误输出信息对比:
这个特性其实在3.9中就开始出现,在3.10中进一步得到完善,使得下面的用法合法(与3.7进行对比):
在之前的版本中,当我们用到多类型提示时,得这样写:
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
在Python
3.10中,代码的错误提示,对于具体错误行位置的提示更加准确了:
以上就是本文的全部内容,欢迎在评论区讨论。
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
量化: 定投基金到底能赚多少钱? | 我用Python对去年800只基金的数据分析
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析| 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记灯谜答题王 |用Python做个海量小姐姐素描图碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
年度爆款文案
1).卧槽!Pdf转Word用Python轻松搞定!
2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃
3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密
4).80行代码!用Python做一个哆来A梦分身
5).你必须掌握的20个python代码,短小精悍,用处无穷
6).30个Python奇淫技巧集
7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货
8).再见Python!我要学Go了!2500字深度分析
9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片
点阅读原文,看Python全套!