Python 3.10 来了,居然有这新特性!

简介: 新版本添加了很多新的特性,其中最大的特性就莫过于还是安装新版本之后有些python包不支持还得回到原来版本🐶不过话说回来,除了部分包不兼容以外,还是有很多好用的性能提升其中最有帮助的就是就是报错更加智能化了


已经达到了而立之年的Python,最近发布了3.10版本

新版本添加了很多新的特性,其中最大的特性就莫过于还是安装新版本之后有些python包不支持还得回到原来版本🐶

不过话说回来,除了部分包不兼容以外,还是有很多好用的性能提升

其中最有帮助的就是就是报错更加智能化了

例如语法错误,很多年前作为小白的我遇到这个语法错误问题还跑过去问老师

毕竟百度搜索语法错误该怎么办,它回答不上来,最后老师给我指出来原因是少一个加一个括号,顿时无比尴尬

后来python性能优化给出了错误的位置在哪,但是有些程序即使给出了还是很难找出原因,所以这次升级,python就怕你不会改,将错误的原因也给标了出来

1错误提示

目前python里出现频率最高的错误有以下几种:

   ’:'缺少: SyntaxError: expected ‘:’

   ’,'缺少: SyntaxError: invalid syntax. Perhaps you forgot a comma?

   字典缺失值: SyntaxError: ‘:’ expected after dictionary key

   try没有块except或finally块:

   SyntaxError: expected ‘except’ or ‘finally’ block

   在比较中使用=代替==:

   SyntaxError: cannot assign to attribute here. Maybe you meant ‘==’ instead of ‘=’?

这些日常常见的粗心错误,python直接给你提示并解释出来了,就差动手帮你改了

当然除此之外还有缩进错误、属性错误、名称错误都会有详细的提示,让你写的bug能够更加流畅

这个特性对于初学者来说还是非常nice的

2python

还有一个比较瞩目的新特性是添加了一个新的关键字:match

不像其他编程语言有switch,python之前一直没有,现在给加上了这个特性,而且还用match语句来代替它

match的通用语法如下,case从上到下将目标与语句中的每个模式进行比较,直到确认匹配为止

如果未确认完全匹配,则最后一种情况,通配符_(如果提供)将用作匹配情况。如果未确认完全匹配且不存在通配符大小写,则整个匹配块为空操作。

match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

不像有些语言的switch只能匹配一种数据类型

而python3.10里的match作为super版的switch可以匹配文字、变量、类对象、位置参数,甚至还有嵌套模式、复杂模式和Guard

Guard就暂且翻译成守卫,就是在case后面可以加入一个if判断

如果守卫为假,match则继续尝试下一个案例块。请注意,值捕获发生在评估守卫之前:

match point:
    case Point(x, y) if x == y:
        print(f"The point is located on the diagonal Y=X at {x}.")
    case Point(x, y):
        print(f"Point is not on the diagonal.")

就是因为这样的新特性便出现了下面这样的神仙语句image.png

如果不知道“软关键字”这个,肯定会提出疑问,关键字怎么能做变量呢?

这让我想起一个段子:

小明送给领导两个红包.

   领导:你这是什么意思

   小明:意思意思

   领导:“你这就不够意思了.”

   小明:“小意思,小意思.”

   领导:“你这人真有意思.”

   小明:“其实也没有别的意思.”

   领导:“那我就不好意思了.”

   小明:“是我不好意思.”

要求:分别解释每个“意思”的意思.

这里的意思就相当于python3.9推出的“软关键字”特性,不同的位置具有不同的意思,python也是通过不同位置来判断代码的具体意思

这已经非常的人性化了,就差跟我意思意思了~

3最后

那要不要升级最新版python呢?

一行的建议还是跟着你常用的包来确定,常用包支持python3.10就去升级,不支持就等等,也不差这一段时间

当然,python3.10还有很多非常有意思的更新内容,详细可以官网链接进行查看:

https://docs.python.org/3/whatsnew/3.10.html


相关文章
|
2月前
|
测试技术 API Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
44 2
|
1月前
|
Python
Python的高级语法及许多特性
Python的高级语法及许多特性
20 0
|
3月前
|
机器学习/深度学习 监控 安全
Python3.12 新版本之f-string的几个新特性
Python3.12 新版本之f-string的几个新特性
42 0
|
7月前
|
程序员 Python
Python面向对象特性
Python面向对象特性
26 0
|
8月前
|
Python
Python3中的特性-----Property介绍
Python3中的特性-----Property介绍
42 0
|
9月前
|
IDE 开发工具 Python
Python 3.11的10个使代码更加高效的新特性
在本文中我们将介绍Python 3.11新特性,通过代码示例演示这些技巧如何提高生产力并优化代码。
150 0
|
9月前
|
IDE 程序员 开发工具
​Python 3 新特性:类型注解
我们知道 Python 是一种动态语言,变量以及函数的参数是不区分类型。
|
9月前
|
XML 安全 Unix
Python3.7升级Python3.8(Python3.8新特性调研)
Python3.7升级Python3.8(Python3.8新特性调研)
276 0
|
10月前
|
存储 索引 Python
12.从入门到精通:Python字典,创建字典,访问字典的值,修改字典,删除字典,字典键的特性,字典内置函数和方法
12.从入门到精通:Python字典,创建字典,访问字典的值,修改字典,删除字典,字典键的特性,字典内置函数和方法
|
11月前
|
Python
python中序列解包特性及其便捷赋值,人生苦短,我学python
python中序列解包特性及其便捷赋值,人生苦短,我学python
102 0