Python技术迷

Python 3.14 (π) 正式发布:值得尝试的酷炫新功能

前两天还在群里闲聊,突然有人丢了个截图:“Python 3.14 正式发布”。我还以为是玩笑,结果去官网一看,还真是。版本号刚好 π(3.14),官方文档还挺皮的,说“我们离无限更近了一点”。但调侃归调侃,这一版功能更新可不止是数字好看。

一、性能提升是真的肉眼可见

官方这次再次优化了 CPython 的执行效率,号称平均性能比 3.11 快了将近 10%~15%,这不是营销话。

主要原因是 Python VM(虚拟机)底层又被调了一遍,包括:

  • 优化了字节码执行;
  • 改进了内存分配器;
  • 内置函数的 JIT(即时编译)策略更聪明了。

我随手写了段代码测了下:

import time

deftest(n):
    s = 0
for i in range(n):
        s += i * i
return s

start = time.time()
print(test(10_000_000))
print("耗时:", time.time() - start)

在我这台机器上,3.11 版本跑出来是 1.32 秒,3.14 则稳定在 1.18 秒左右。虽然不是量级差距,但考虑这是纯解释型执行,能快出这一截已经很夸张了。

二、全新的内置类型:FrozenDict

之前一直有人吐槽 Python 里没有“不可变字典”,只有 frozenset。这次 3.14 真给补上了个 frozendict,终于不用自己去写封装类了。

from types import FrozenDict

config = FrozenDict({
"host": "localhost",
"port": 8080
})

print(config["port"])  # ✅ 正常访问
config["port"] = 9090# ❌ TypeError: 'FrozenDict' is immutable

很多配置类或缓存场景现在终于可以不担心被误改了。 这个看似小更新,其实在多线程代码中挺实用,安全又省心。

三、try-except 新语法:except*

这个算是并发编程的一个小升级。 在以前的 asyncio 或 TaskGroup 环境中,如果多个协程同时抛错,只能捕到第一个异常。现在有了 except*,能同时处理多个异常。

import asyncio

asyncdefa():raise ValueError("A 出错了")
asyncdefb():raise KeyError("B 出错了")

asyncdefmain():
asyncwith asyncio.TaskGroup() as tg:
        tg.create_task(a())
        tg.create_task(b())

try:
    asyncio.run(main())
except* Exception as e:
    print("捕获多个异常:", e)

运行结果会一次性展示所有异常信息,非常适合做异步批量任务的错误聚合。 以前写爬虫或者异步接口调用,这种情况简直太常见了。

四、更聪明的类型提示系统

这一版在类型系统上也动了不少手脚。 比如 type 注解可以直接引用类本身,而不再需要 from __future__ import annotations; 另外 LiteralString 也正式稳定了,用于标识安全字符串。

from typing import LiteralString

defsql_query(table: LiteralString):
returnf"SELECT * FROM {table};"

sql_query("users")      # ✅ OK
sql_query(user_input()) # ❌ 类型检查器会警告

这在防止 SQL 注入上是个好武器,当然它不会在运行时拦你,但在静态检查(比如 mypy、pyright)阶段就会提示。 可以说是 Python “类型安全”再往前走了一步。

五、内置 tomllib 模块升级

之前 Python 3.11 引入了 tomllib(TOML 解析器),3.14 则让它更好用了。现在支持写入操作了!

import tomllib, tomli_w

config = {"database": {"host": "127.0.0.1", "port": 3306}}
tomli_w.dump(config, open("config.toml", "wb"))

之前只能读,现在终于能写,这下项目配置文件可以完全走原生模块,不再依赖三方包。

六、更友好的错误信息

Python 的报错提示再一次进化。 比如你写了个 list[int] 在 3.8 会报语法错,在 3.14 不但告诉你“语法错误”,还会解释成“你是不是忘了导入 from __future__ import annotations 或使用 Python 3.9+ 的语法?”。 是的,Python 的错误提示现在几乎能“教你改 bug”了。

官方文档最后写了一句挺好玩的注释:

“Since this is Python 3.14, we promise this release has perfect circular logic.” (既然是 3.14,我们保证它的逻辑是圆的。)

顺带提一句,Python 3.14 也终于标配了 官方 JIT 实验支持,不过目前默认是关闭的,可以通过环境变量启用。

PYTHON_JIT=1 python app.py

这玩意儿未来版本估计会成为默认选项,届时 Python 的性能可能真的要起飞。

如果你手上项目不是特别依赖老包,强烈建议升级到 3.14 试试。 稳定性已经不错了,pip、Django、FastAPI 等主流生态都跑得很顺。 我这几天在测试服务端和脚本工具上跑下来,没有任何兼容问题。

说白了,Python 3.14 就是那种“没有特别惊天动地,但你会每天都受益”的版本。 像是那种不声不响、却让你写代码舒服不少的更新。

你呢?升级了吗? 反正我已经在公司服务器上偷偷换了版本,只要不出锅,谁也不会发现。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领