利用Conda尝鲜Python 3.10
1 简介
就在几天前,Python
3.10的第一个正式版本3.10.0
发布,之前我们只是从其各个测试版本中捕风捉影地知晓了一些可能加入的新特性,而在正式版本中,我们得以一睹其正式加入的诸多新特性。
本文我就将带大家学习如何通过conda
快速安装3.10正式版本的Python
,并体验其重要的一些新特性。
2 Python 3.10正式版本重要特性一览
如果你已经安装了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
进行演示:
下面就让我们来体验其重要的一些新特性吧~
2.1 新的结构模式匹配语法
上一次为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('输入非法!')
2.2 更清晰的错误提示
在Python
3.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 更加准确的错误代码行位置提示
在Python
3.10中,代码的错误提示,对于具体错误行位置的提示更加准确了:
以上就是本文的全部内容,欢迎在评论区与我进行讨论。
利用Conda尝鲜Python 3.10的更多相关文章
- Odoo10尝鲜:MRP 10 新概念
OEE [ overall equipment Effectiveness 整体设备效率 ] 整體設備效率是整合稼働率 (Availability).產能效率 (Performance).良率 (Qu ...
- Windows 10 周年版尝鲜
早在今年的 Build 大会上,微软就开始宣传最新的 Windows 10 周年版更新,炫了不少特技,直到昨天(2016/8/2 PST)才正式放出,相关新闻可以参考这里,正式的版本为 Version ...
- 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅
本文由微信开发团队工程是由“oneliang”原创发表于WeMobileDev公众号,内容稍有改动. 1.引言 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发( ...
- 利用Anaconda完美解决Python 2与python 3的共存问题
前言 现在Python3 被越来越多的开发者所接受,同时让人尴尬的是很多遗留的老系统依旧运行在 Python2 的环境中,因此有时你不得不同时在两个版本中进行开发,调试. 如何在系统中同时共存 Pyt ...
- 前端每周清单第 49 期:Webpack 4 Beta 尝鲜,React Windowing 与 setState 分析,Web Worker 实战
前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点:分为新闻热点.开发教程.工程实践.深度阅读.开源项目.巅峰人生等栏目.欢迎关注[前端之巅]微信公众号(ID: fron ...
- Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
译者前言:相信凡是用过 zip() 内置函数的人,都会赞同它很有用,但是,它的最大问题是可能会产生出非预期的结果.PEP-618 提出给它增加一个参数,可以有效地解决大家的痛点. 这是 Python ...
- 【翻译】五步快速使用LINQPad尝鲜StreamInsight
StreamInsight 学习地址:http://www.cnblogs.com/StreamInsight/archive/2011/10/26/StreamInsight-Query-Seri ...
- 【响应式】foundation栅格布局的“尝鲜”与“填坑”
提到响应式,就不得不提两个响应式框架--bootstrap和foundation.在标题上我已经说明白啦,今天给大家介绍的是foundation框架. 何为"尝鲜"?就是带大伙 ...
- Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例
前言:由于之前没有接触过Hibernate框架,但是最近看一些博客深深被它的"效率"所吸引,所以这就来跟大家一起就着一个简单的例子来尝尝Spring全家桶里自带的JPA的鲜 Spr ...
随机推荐
- 嵌入式Linux的启动过程
1.了解 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展.虽然 Linux 在桌面 PC 机上的 ...
- 刷题-力扣-113. 路径总和 II
113. 路径总和 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-ii 著作权归领扣网络所有.商业转载请联系 ...
- 自建纯净谷歌搜索「GitHub 热点速览 v.21.35」
作者:HelloGitHub-小鱼干 虽然 Google 搜索的结果不如百度搜索结果那般广告丛生,但是对于一心只想找到匹配结果的我们而言,推广的信息条目能免则免.whoogle-search 便是一个 ...
- 跟我一起用unity做小地图!
lol的小地图 转载爬虫请自重,未问先转没排面 不爱多做铺垫,小地图对于一些游戏来说多重要大家都懂,不然你也不会来看我这篇文章的,对不对? 话不多说,开搞! 一.主体功能 一般来说,游戏里的迷你地图都 ...
- SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化。
一.基础原理 Base64是一种用64个Ascii字符来表示任意二进制数据的方法.主要用于将不可打印的字符转换成可打印字符,或者简单的说是将二进制数据编码成Ascii字符.Base64也是网络 ...
- Python面向对象编程及内置方法
在程序开发中,要设计一个类,通常需要满足以下三个要求: [1]类名 这类事物的名字,满足大驼峰命名法 [2]属性 这类事物具有什么样的特征 [3]方法 这类事物具有什么样的行为 定义简单的类: 定义只 ...
- CSS 是啥?前端小白入门级理解
What is CSS? CSS stands for Cascading Style Sheets CSS describes how HTML elements are to be display ...
- Mybatis-Plus增强包
简介 本框架(Gitee地址 )结合公司日常业务场景,对Mybatis-Plus 做了进一步的拓展封装,即保留MP原功能,又添加更多有用便捷的功能.具体拓展体现在数据自动填充(类似JPA中的审计).关 ...
- [考试总结]noip模拟39
不写那么多没用的了 开题就发现 \(T4\) 原题, \(T1\) 大水题. 然后发现 \(T4\) 忘了.... 不扯了 打地鼠 大水题,我代码都不想放... 算了,还是放一下吧.. #includ ...
- Selenium系列(22) - 通过selenium控制浏览器滚动条的几种方式
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...