前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 3.10 来了,居然有这新特性!

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

作者头像
行哥玩Python
发布2021-10-21 15:07:11
1.2K0
发布2021-10-21 15:07:11
举报
文章被收录于专栏:一行数据一行数据

大家好,我是一行

已经达到了而立之年的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.")

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

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

这让我想起一个段子:

小明送给领导两个红包.

  • 领导:你这是什么意思
  • 小明:意思意思
  • 领导:“你这就不够意思了.”
  • 小明:“小意思,小意思.”
  • 领导:“你这人真有意思.”
  • 小明:“其实也没有别的意思.”
  • 领导:“那我就不好意思了.”
  • 小明:“是我不好意思.”

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

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

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

3最后

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

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

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

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

我是一行,技术永不眠,我们下期见~

对了,一行用爬虫爬取了知乎里150000字的python学习攻略,并统计分析了这些年入百万的python大佬所推荐的Python书单,花了很长时间整理成电子书合集如下图所示,需要的可以添加一行微信好友「yihangpy」直接领取哦~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一行数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1错误提示
  • 2python
  • 3最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档