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 全部免费领