Python 3.15 于 2026 年 10 月 9 日正式发布,这次没有延期,重要特性一览。
一、添加内置类型sentinel
用来创建“哨兵值”,比以前用 object() 更规范、可读性更好,而且支持 pickle。
以前常见写法:
MISSING = object()
def get(key, default=MISSING): if default is MISSING: ...
或者直接用 None:
def get(key, default=None): if default is None: ...
这些写法都有明显缺点:

|
字符串 "MISSING" |
容易和真实字符串冲突 |
从 3.15 开始,官方提供了标准的 sentinel 内置类型:
MISSING = sentinel("MISSING")
def get_config(value=MISSING): if value is MISSING: return "使用默认配置" return f"使用配置: {value}"
print(get_config()) # 使用默认配置print(get_config("debug")) # 使用配置: debugprint(MISSING) # MISSING(打印很友好)
二、显式懒惰导入以加快启动时间
千呼万唤始出来,"lazy"这个概念早在Polars里面就出现过,这次Python也引入了,一个数据处理的懒执行,一个是加快程序启动速度、减少不必要的内存占用。
lazy import pandas as pdlazy import matplotlib.pyplot as plt
三、Python 现在默认使用 UTF-8 编码
以前 open() 不写 encoding 会跟着系统 locale 走(Windows 经常是 cp1252),现在统一默认 UTF-8。
没什么好说的,早该如此。
四、推导式中的解包
列表/集合/字典推导式和生成器表达式现在支持 * 和 ** 解包,写起来更灵活。
nested = [[1, 2], [3, 4, 5], [6]]
# 以前要写两层 forflat_old = [x for sub in nested for x in sub]
# 现在直接解包flat_new = [*sub for sub in nested]print(flat_new) # [1, 2, 3, 4, 5, 6]
# 字典也可以dicts = [{"a": 1}, {"b": 2}, {"c": 3}]merged = {**d for d in dicts}print(merged) # {'a': 1, 'b': 2, 'c': 3}
五、添加内置类型frozendict
感觉 frozendict 就是「不可变的字典」,类似 frozenset 之于 set。
# 普通字典(可变)d = {"name": "Alice", "age": 30}d["age"] = 31 # 可以改d["city"] = "Beijing" # 可以加del d["name"] # 可以删
# frozendict(不可变)fd = frozendict(name="Alice", age=30)fd["age"] = 31 # 报错!TypeErrorfd["city"] = "Beijing" # 报错!
六、打包启动配置文件
不是很重要,此处省略。。。
这是给包作者用的改进。以前 .pth 文件里可以写 import xxx 在启动时执行代码,现在推荐用更安全的 .start 文件 + entry point。
七、实验性 JIT 编译器升级
不是很重要,此处省略。。。
底层性能提升。官方测试平均能快 7~12%,实际请自己感受。
八、新工具Tachyon —— 高频统计抽样剖析器
把 Python 的性能分析工具整理进了统一的 profiling 包,并引入了 Tachyon(profiling.sampling)——一个几乎零开销、能直接挂到生产进程上的高频统计抽样分析器。它弥补了以前 cProfile 开销大、不适合生产环境的短板。
以上就是“懒导入终于来了!Python 3.15 新功能速览!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14590/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料