Python 3.12新功能(1)

Python 3.12正式发布已经很久了,我才将主要电脑的Python版本从3.11升级到最新。最近刚好工作没有那么紧张了,就来领略下这个最新版本中的新特性。

 

改善了错误消息

Python作为一门编程语言,简单易学容易上手,童叟无欺,深受广大码农的厚爱。其中有一点需要归功于它相对友好的出错消息。通常很容易从出错的提示信息知道代码哪里出了语法或逻辑错误。从Python 3.10开始,很多Python的错误消息,尤其是语法错误的提示,越来越精准有用了。现在很多出错的消息里边,不仅仅告诉你哪里出错了,Python甚至更进一步给出了修正问题的建议。

让我们来看几个例子吧。

第一个例子:使用了未导入的包

先来看Python 3.11中是什么情况。

>>> sys.version_info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined

再来对比一下Python 3.12是如何爱我们码农的。

>>> sys.version_info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined. Did you forget to import 'sys'?

感受到Python越来越优秀了吗?

第二个例子:包导入的语法

>>> import a.y.z from b.y.z
  File "<stdin>", line 1
    import a.y.z from b.y.z
    ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Did you mean to use 'from ... import ...' instead?

如果哪位同学,因为工作需要,频繁地在多种编程语言中切换的,对这个提示应该是非常喜欢滴。(我就常常会弄混import语法,不论是用Python, JAVA或者TS/JS)

第三个例子:导入包的拼写错误

对比一下Python 3.11和3.12.

>>> from collections import chainmap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'chainmap' from 'collections' (C:\Users\bruce\.pyenv\pyenv-win\versions\3.11.3\Lib\collections\__init__.py)

>>> from collections import chainmap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'chainmap' from 'collections' (C:\Users\bruce\AppData\Local\Programs\Python\Python312\Lib\collections\__init__.py). Did you mean: 'ChainMap'?

(时间有限,今天先码字到这里了。)后续再看其他的更多新特性,欢迎大家评论或私信交流,一起做更棒的开发者!

Python 3.12 是该语言的一个重要版本,它于20233月正式发布。这个版本包含了一些新特性和改进,虽然具体的细节可能会随着时间而更新,以下是几个值得注意的部分: 1. **PEP 647 - Literal String Interpolation (f-string literals)**:引入了新的字符串插值语法,类似于C++和JS中的模板字面量,使得字符串拼接更加简洁。 2. **Type Checking Improvements**:对类型注解的支持进一步增强,包括更严格的类型检查和更好的类型推断能力。 3. **Pattern Matching with `match` and `async match`**:类似正则表达式的模式匹配功能被添加到了`match`和`async match`函数中,用于处理可迭代对象的更复杂解析。 4. **Coroutine-friendly Generators**: 更好的协程支持,如`async for`循环现在可以正常中断并恢复执行,这对于异步迭代器处理非常有用。 5. **`typing.Protocol` Improvements**:协议类型(Protocol)的功能得到了加强,使得开发者可以更容易地定义自定义类型约束。 6. **`importlib.metadata` Enhancements**: 对模块元数据的访问进行了简化,方便获取软件包的信息。 7. **`sys.implementation`**: 提供了一个系统实施信息的新属性,用于了解正在运行的Python实现的详细信息。 请注意,这只是一部分新特性概述,实际使用中还有其他很多细节变化和性能提升。如果你打算升级到Python 3.12,建议查看官方文档以获得最新和详细的迁移指南。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce Jia(上海)

熬夜码字换酒钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值