Skip to content

Python 3.12 新特性:写代码更爽了

发布时间:2023-10-15 08:00
最后编辑:2023-10-15 08:00
全文大约 0 字(读完需 1 分钟)

Python 3.12 上周正式发布,我第一时间升级体验了一下。

这个版本的改进集中在性能和开发体验上,很实用。

性能提升

官方说比 3.11 快 5%,我实测感觉差不多。

主要优化来自:

  • 更快的异步生成器
  • 减少函数调用开销
  • 内存使用优化

对于日常脚本影响不大,但跑大型项目能感知到。

更好的错误提示

这个是我最喜欢的改进。

以前:

NameError: name 'resutl' is not defined

现在:

NameError: name 'resutl' is not defined. Did you mean: 'result'?

它会猜你想写什么!对于初学者太友好了。

还有更精确的语法错误定位:

python
# 以前只说第 5 行有错
# 现在会用 ^^^ 标记具体是哪个地方错了

类型参数语法

终于不用手写 TypeVar 了:

python
# 以前
from typing import TypeVar
T = TypeVar('T')

def first(items: list[T]) -> T:
    return items[0]

# 现在
def first[T](items: list[T]) -> T:
    return items[0]

简洁多了,和其他语言的泛型语法更接近。

f-string 改进

现在 f-string 里可以用任意表达式了:

python
# 以前会报错
f"result: {x:=10}"  # 这种复杂格式以前不支持

# 现在都可以
f"data: {(lambda: x)()}"

更灵活,虽然不建议写太复杂的表达式。

怎么升级

bash
# macOS
brew install python@3.12

# Windows
# 去官网下载安装包

# 或者用 pyenv
pyenv install 3.12.0
pyenv global 3.12.0

建议用虚拟环境隔离,别直接替换系统 Python。

总结

Python 3.12 是一个稳健的更新。

没有破坏性改动,但很多小改进能让日常开发更顺手。 特别是错误提示改进,对学习 Python 的同学帮助很大。

Built with ❤️ using VitePress v2 & Vue & Vite