Python 3.13.0 版本于 2024 年 10 月 7 日发布,带来了一系列新特性和改进,使得 Python 语言更加强大和易于使用。以下是该版本的主要更新内容。
交互式解释器经过升级,现在支持多行编辑和彩色输出,提高了用户友好性和视觉吸引力。这些改进受到了 PyPy 特性的启发,帮助开发者更轻松地编写和调试代码。例如:
def greet(name):
return f"Hello, {name}!"
print(greet("World"))
输出结果为:
Hello, World!
Python 3.13.0 引入了实验性模式,关闭了全局解释器锁(GIL),允许多个线程同时运行。这一特性在 Windows 和 macOS 安装程序中可用,提高了多线程应用程序的性能,并更好地利用了现代多核处理器。例如:
import threading
def print_numbers():
for i in range(5):
print(i)
threads = []
for _ in range(5):
thread = threading.Thread(target=print_numbers)
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
输出结果为线程打印的数字序列。
此版本包括一个实验性的 JIT 编译器,旨在通过在运行时编译代码的部分来加速执行。尽管仍处于早期阶段,但这一特性未来可能会带来重大的性能提升,帮助Python与 Java 和 C# 等语言更好地竞争。
locals() 内置函数的行为经过改进,提供了在修改返回的映射时的明确语义。这一改进确保了调试器可以更一致地运行。例如:
def example_function():
x = 10
y = 20
local_vars = locals()
local_vars['x'] += 5 # 修改局部变量
return x, y
print(example_function())
输出结果为 (10, 20)。
Python 3.13.0 包括了更新版本的 mimalloc 内存分配器,现在它是可选的,但如果平台支持,默认情况下会启用。这个分配器有助于减少内存使用,特别是对于使用大量文档字符串的应用程序。
def large_docstring_function():
"""This is a function with a large docstring that is intended to demonstrate
how leading indentation is stripped to save memory."""
pass
dbm 模块现在默认使用 dbm.sqlite3 后端创建新的数据库文件,增强了其功能和可靠性。这一变化通过利用 SQLite 的强大特性,简化了 dbm 模块的使用。例如:
import dbm
with dbm.open('example.db', 'c') as db:
db['key'] = 'value'
print(db['key']) # 输出: value
输出结果为 b 'value'。
macOS 的最低支持版本已从 10.9 更新为 10.13(High Sierra),意味着不再支持旧版本的 macOS。这一变化允许开发者专注于现代 macOS 特性和优化,确保与当前系统的兼容性。
Python 3.13.0 将 WebAssembly 系统接口(WASI)升级为 Tier 2 支持,而不再官方支持 Emscripten。此外,iOS 和 Android 现在被归类为 Tier 3 支持平台。这种分类帮助开发者了解他们在使用 Python 的不同平台上可以期待的支持和稳定性水平。
类型模块的新特性包括支持类型参数中的类型默认值、新的类型缩小注释(typing.TypeIs)以及在类型系统中标记弃用的注释。这些改进增强了类型提示功能,使Python在类型检查方面更加健壮,并提高了代码清晰度。例如:
from typing import TypeVar, List
T = TypeVar('T', bound=int)
def sum_numbers(numbers: List[T]) -> T:
return sum(numbers)
print(sum_numbers([1, 2, 3]))
输出结果为 6。
Python 3.13.0 根据 PEP 594 移除了许多弃用的模块,旨在简化标准库。被移除的模块包括 aifc、cgi 和 telnetlib 等。这次清理减少了标准库的膨胀,并鼓励开发者使用更现代和高效的替代品。
检查当前Python版本:
!python --version
安装 Python 3.13:
!sudo apt-get update -y
!sudo apt-get install python3.13
更新替代品以指向新 Python 版本:
!sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
!sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 2
!python --version
- 交互式解释器:标准解释器 vs. 增强的多行编辑和颜色支持
- GIL 处理:标准 GIL vs. 实验性自由线程构建模式
- 性能:5% 的整体性能提升vs. 引入初步 JIT 以提升性能
- 内存管理:标准内存管理 vs. 可选的 mimalloc,减少内存使用
- 错误报告:增强的错误消息 vs. 异常回溯的进一步改进
- dbm 模块:标准 dbm 功能 vs. 默认使用 dbm.sqlite3 后端
- macOS 支持:支持 macOS 10.9 及更高版本 vs. 最低支持更新至 macOS 10.13
- 平台支持:标准平台支持 vs. WASI 为 Tier 2;iOS 和 Android 为 Tier 3
- 类型:新的类型注释语法 vs. 新的类型默认值、缩小注释和弃用