Python 作为当今最流行的编程语言之一,一直在不断进化和改进。2024 年 10 月 7 日,Python 3.13 正式发布,带来了一系列令人兴奋的新特性和改进。本文将为您详细介绍 Python 3.13 的主要亮点,让我们一起来探索这个新版本的魅力吧!
创作背景
Python 社区一直致力于提升语言的性能、易用性和功能性。Python 3.13 的发布是这一持续努力的又一重要里程碑。新版本不仅优化了解释器,还引入了实验性的无 GIL 模式和 JIT 编译器,同时对标准库进行了重要更新。这些改进旨在满足开发者日益增长的需求,使 Python 在各种应用场景中都能发挥出色的表现。
主要特性
1. 全新的交互式解释器
Python 3.13 引入了基于 PyPy 项目的新交互式 shell,提供了更加强大和用户友好的 REPL 体验:
支持多行编辑并保留历史记录 直接支持 REPL 特定命令,如 help
、exit
和quit
默认启用彩色提示符和回溯信息 使用 F1 键进行交互式帮助浏览 使用 F2 键浏览历史记录,跳过输出和提示符 使用 F3 键进入"粘贴模式",方便粘贴大块代码
2. 实验性无 GIL 模式
Python 3.13 引入了实验性的无全局解释器锁(GIL)模式,这是一项重大突破:
允许在多核 CPU 上实现真正的并行执行 需要使用特殊的可执行文件(通常名为 python3.13t
或python3.13t.exe
)可以通过 PYTHON_GIL
环境变量或-X gil=1
命令行选项在运行时启用 GIL
3. 实验性 JIT 编译器
Python 3.13 引入了实验性的即时编译器(JIT):
通过 --enable-experimental-jit
选项启用可能会提高某些 Python 程序的运行速度 使用"复制并修补"技术,无运行时依赖
4. 改进的错误消息
Python 3.13 进一步优化了错误消息,提供更有帮助的信息:
终端中的回溯信息默认使用彩色显示 对于与标准库模块同名的脚本,提供更明确的错误提示 在传递错误关键字参数时,尝试建议正确的关键字
5. 标准库更新
Python 3.13 对标准库进行了多项改进:
新增 PythonFinalizationError
异常argparse
模块支持废弃命令行选项、位置参数和子命令base64
模块新增 Z85 编码和解码支持copy
模块新增copy.replace()
函数dbm.sqlite3
成为dbm
的默认后端os
模块新增用于处理 Linux 定时器通知文件描述符的函数random
模块新增命令行接口
快速上手
让我们通过一些简单的示例来体验 Python 3.13 的新特性:
1. 使用新的交互式解释器
启动 Python 3.13 的交互式解释器,你会发现更加友好的界面:
$ python3.13
Python 3.13.0 (main, Oct 7 2024, 12:00:00) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> # 尝试多行输入
>>> def greet(name):
... print(f"你好,{name}!")
... print("欢迎使用 Python 3.13")
...
>>> greet("Python 爱好者")
你好,Python 爱好者!
欢迎使用 Python 3.13
2. 体验改进的错误消息
尝试故意犯一个错误,看看新的错误消息:
>>> "Python 3.13 新特性".split(max_split=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: split() got an unexpected keyword argument 'max_split'. Did you mean 'maxsplit'?
注意错误消息如何智能地建议正确的参数名。
3. 使用新的 copy.replace()
函数
>>> import copy
>>> original = {"name": "Python", "version": "3.12"}
>>> updated = copy.replace(original, version="3.13")
>>> print(original)
{'name': 'Python', 'version': '3.12'}
>>> print(updated)
{'name': 'Python', 'version': '3.13'}
4. 尝试 random
模块的命令行接口
在命令行中运行:
$ python -m random
Usage: python -m random [-h] {choices,randrange,randint,random,uniform} ...
Generate random numbers
positional arguments:
{choices,randrange,randint,random,uniform}
choices Choose items from a sequence
randrange Choose a random integer from a range
randint Choose a random integer from a range (inclusive)
random Generate a random float between 0 and 1
uniform Generate a random float within a specified range
options:
-h, --help show this help message and exit
$ python -m random randint 1 10
7
总结
Python 3.13 带来了许多激动人心的新特性和改进,从更友好的交互式解释器到实验性的无 GIL 模式和 JIT 编译器,再到标准库的诸多更新。这些变化不仅提升了 Python 的性能和易用性,还为未来的发展奠定了基础。
作为 Python 开发者,我们有理由对这门语言的未来充满期待。让我们一起拥抱这些新特性,在 Python 编程的世界里继续探索和创新!
参考文章
What's New In Python 3.13:https://docs.python.org/3/whatsnew/3.13.html PEP 703 – Making the Global Interpreter Lock Optional in CPython:https://peps.python.org/pep-0703 PEP 744 – A JIT Compiler for CPython:https://peps.python.org/pep-0744