Python 3.13 震撼发布!这些新特性你一定要知道

文摘   科技   2024-10-09 13:07   四川  

引言

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 特定命令,如 helpexitquit
  • 默认启用彩色提示符和回溯信息
  • 使用 F1 键进行交互式帮助浏览
  • 使用 F2 键浏览历史记录,跳过输出和提示符
  • 使用 F3 键进入"粘贴模式",方便粘贴大块代码

2. 实验性无 GIL 模式

Python 3.13 引入了实验性的无全局解释器锁(GIL)模式,这是一项重大突破:

  • 允许在多核 CPU 上实现真正的并行执行
  • 需要使用特殊的可执行文件(通常名为 python3.13tpython3.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 202412: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 1in <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 编程的世界里继续探索和创新!

参考文章

  1. What's New In Python 3.13:https://docs.python.org/3/whatsnew/3.13.html
  2. PEP 703 – Making the Global Interpreter Lock Optional in CPython:https://peps.python.org/pep-0703
  3. PEP 744 – A JIT Compiler for CPython:https://peps.python.org/pep-0744



数据科学研习社
带你走进数据科学的世界🚀
 最新文章