利用 Conda 尝鲜 Python 3.10

本文介绍了Python3.10的正式版本,包括如何通过conda快速安装,以及新特性:结构模式匹配语法(match-case)、更清晰的错误提示、括号包裹的多上下文管理器、方便的联合类型提示和更准确的错误代码行位置提示。示例代码展示了match-case语法的使用方法及其在不同场景下的应用。
部署运行你感兴趣的模型镜像

1 简介

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

a226b4e6cf51c30d008c89ac30414cbb.png

本文我就将带大家学习如何通过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进行演示:

096605125c790ad5ad090a33222f873e.png 2c41c1485bea0547952617648614cc57.png

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

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('其他输入')
54149991262a9306cd298577afe61a82.png

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('超出已知选项!')
fe60ca01653cf7313e228a1c7281db52.png

更有趣的是,我们还可以使用任意自定义变量名,在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('输入非法!')
f5613d04d12014abfe85fe6b4f9097fb.png

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

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('输入非法!')
9fb86b1536cea255cc138323e14b856f.png

2.2 更清晰的错误提示

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

1d43f5ceb6350f22c94cf04631d52e77.png

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

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

510d1557a1814843cc2ce530f2f94e1f.png

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中,代码的错误提示,对于具体错误行位置的提示更加准确了:

9ea25f0b71ec6425f8fc317467e93906.png

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


 

 

 

 

 

 

 

推荐阅读:

入门: 最全的零基础学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行代码做了一个语音壁纸切换器天天看小姐姐!

年度爆款文案


 

 

 

 

 

 


 

 

 
点阅读原文,看Python全套!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值