Hello!我是简讯。一名后端编程业余选手。
曾就职于北京某智能旅行规划公司,做 Python 后端开发,现就职于某国企。公众号主要分享编程相关技巧,同时分享好用好玩的资源。编辑器酷爱 Neovim。
想在第一时间收到文章推送,请关注、星标和置顶「爱生活爱扣钉」
★
欢迎关注 爱生活爱扣钉
★
- 记得在底部菜单栏领取福利 -
免费精品资源分享
https://knxhub.top
Python 3.14 已于 2025 年 10 月发布,3.15 于 2026 年 10 月发布。两个版本带来了从语言层面到标准库的大量改进,涵盖了安全性、性能、开发体验等多个维度。

Python 3.14 引入了模板字符串字面量(PEP 750),语法与 f-string 类似,但前缀为 t 而非 f。两者的根本区别在于:f-string 直接返回字符串,而 t-string 返回一个 Template 对象。该对象保留了模板的结构信息,允许调用者在渲染前对内容进行安全处理。
这一机制在 Web 开发中尤为实用。考虑以下场景:用户输入可能包含恶意 HTML 片段,直接拼接到页面中会造成 XSS 攻击。使用 t-string 配合 html 转义函数,可以自动对危险内容进行编码。
from string.templatelib import Template, html
user_input = "<script>alert('xss')</script>"
template = t"<div>{user_input}</div>"
safe_output = str(html(template))
# 输出: <div><script>alert('xss')</script></div>t-string 同样适用于 SQL 参数化查询和日志脱敏等场景。任何需要对模板内容做中间处理的场合,t-string 都比 f-string 更为合适。
Python 3.14 实现了 PEP 649 和 PEP 749,将类型标注的求值从"定义时"推迟到"访问时"。这一改变解决了 Python 类型系统中长期存在的一个痛点:前向引用必须用引号包裹。
在 3.13 及更早版本中,以下写法会抛出 NameError,因为 User 类在函数定义时尚未被创建:
def get_user() -> User: # Python 3.13: NameError
...
class User:
name: str3.14 中,类型标注不再立即求值,因此可以直接引用尚未定义的类型。这也意味着 from __future__ import annotations 不再是必需的导入语句。
def get_user() -> User: # Python 3.14: 正常工作
...
class User:
name: str延迟求值带来的另一个好处是运行时内存占用的降低,因为类型标注对象仅在被访问时才被创建。
PEP 758 允许 except 和 except* 子句中的异常类型列表省略括号。在 3.13 及之前,捕获多种异常必须用括号包裹:
# 3.13 及之前
try:
risky_operation()
except (ValueError, TypeError) as e:
handle(e)
# 3.14:括号可选
try:
risky_operation()
except ValueError, TypeError as e:
handle(e)这是一个小改动,但在日常编码中减少了冗余的符号。
Python 3.14 通过 PEP 765 禁止了 finally 块中的 return、break 和 continue 语句。此前,这些语句会静默吞掉异常,导致调用方无法感知错误。
try:
raise ValueError("重要错误")
except Exception as e:
raise
finally:
return "异常被吞掉了" # 3.13: 允许但危险
# 3.14: SyntaxError这一限制消除了 Python 中一个隐蔽的错误来源,有助于提升代码的可靠性。
PEP 768 为 CPython 提供了一个安全的外部调试接口。开发者无需在代码中插入任何调试语句,即可连接到正在运行的 Python 进程进行调试。
python -m pdb -p <pid>该接口在生产环境的紧急排查场景中具有实用价值,避免了为调试而重启服务的需求。
Python 3.14 在标准库中新增了 compression.zstd 模块,原生支持 Zstandard 压缩算法。Zstandard 在压缩速度和压缩率之间取得了良好平衡,广泛应用于大数据处理和机器学习数据管道。
import compression.zstd as zstd
data = b"Hello, Python 3.14!"
compressed = zstd.compress(data)
original = zstd.decompress(compressed)该模块同时支持流式处理,适用于大文件的增量压缩与解压。
Python 3.14 引入了基于尾调用的新型解释器实现,取代了此前基于大型 switch-case 的传统架构。新解释器通过小型 C 函数之间的尾调用来分发字节码指令,在 CPU 密集型场景中带来了 10% 至 20% 的性能提升。
Python 3.14 的交互式解释器内置了语法高亮功能。关键字、字符串、数字等语法元素会以不同颜色显示,使交互式编程体验更接近集成开发环境。
Python 3.14 引入了实验性的即时编译器,3.15 对其进行了大幅改进,报告的性能提升达到 8% 至 9%。JIT 对循环密集型代码的效果尤为明显:
def compute():
total = 0
for i in range(10_000_000):
total += i * 2
return total在 3.15 中,上述函数的执行速度比 3.13 快约 15% 至 20%。此前需要借助 C 扩展才能优化的场景,现在纯 Python 即可获得可观的性能。
Python 3.15 引入了惰性导入(Lazy Imports)机制,模块在首次被使用时才真正加载。对于包含大量导入的 CLI 工具,这一机制可以显著缩短启动时间:
import sys
sys.flags.lazy_imports = True启用后,import pandas 这样的语句仅在实际调用 pandas 时才触发模块加载。在实践中,CLI 工具的启动时间可缩短 50% 至 70%。
Python 3.15 将所有平台上的默认文本编码统一为 UTF-8。此前在 Windows 上,默认编码取决于系统区域设置,常导致跨平台项目出现编码不一致的问题。3.15 之后,开发者不再需要显式指定 encoding="utf-8" 参数。
3.15 新增了 -X perf 命令行标志,提供接近零开销的性能分析能力。与传统的 cProfile 相比,该工具的运行时开销极低,适合在生产环境中使用。
Python 3.14 引入了实验性的无 GIL 模式(Free-threaded),3.15 为其提供了稳定的应用程序二进制接口(ABI)。这意味着在 Free-threaded 模式下编译的 C 扩展可以在不同 Python 版本间保持兼容,为真正利用多核并行的 Python 程序奠定了基础。
对于新项目,我建议直接使用 Python 3.14,并在 3.15 正式发布后平滑升级。对于现有项目,推荐在 CI 流水线中添加 3.14 的兼容性测试,确认无误后再进行升级。数据科学和机器学习项目可优先尝试 3.14 的 Zstandard 模块和 JIT 编译器。CLI 工具开发者则应关注 3.15 的惰性导入机制,这对改善用户体验有直接帮助。
两个版本共同体现了 Python 发展的两个核心方向:语言层面内建安全机制,以及通过 JIT、惰性导入等技术逐步提升运行时性能。Python 正在从"易用但低效"的刻板印象中走出,成为一门兼顾开发效率与运行性能的现代编程语言。
# 每天更新一下自己 #
# 感谢你的阅读 #