写点什么

跟着官方文档学 Python 之:3.12 新变化

作者:甜甜的白桃
  • 2022 年 6 月 17 日
  • 本文字数:1485 字

    阅读完需:约 5 分钟

跟着官方文档学 Python 之:3.12 新变化

1、Python 3.12 有什么新变化

https://docs.python.org/zh-cn/3.12/whatsnew/3.12.html


Release 3.12.0a0

Date 六月 16, 2022

相比 3.11 版本亮点功能 PEP 623从 Unicode 中删除 wstr

相比 3.11 版本新的功能


  1. 添加 os.PIDFD_NONBLOCK 以在非阻塞模式下使用 os.pidfd_open() 打开进程的文件描述符。

  2. 从 Unicode 中删除了 wstr 和 wstr_length 成员,在 64 位平台上将对象大小减少了 8 / 16 个字节。

  3. CPython 字节码更改:删除了 LOAD_METHOD 指令,它已合并到 LOAD_ATTR。如果设置了 oparg 的低位,则 LOAD_ATTR 现在的行为类似于旧的 LOAD_METHOD 指令。

  4. 部分模块和 API 在早期的 Python 版本中已被弃用,并将在 Python 3.13 中删除 (see PEP 594) 。

  5. 以下 API 在较早的 Python 版本中已被弃用,未来会删掉,暂无排期。


  • typing.Text (gh-92332)

  • Currently Python accepts numeric literals immediately followed by keywords, for example 0in x1or x0if 1else 2. It allows confusing and ambiguous expressions like [0x1for x in y] (which can be interpreted as [0x1 for x in y] or [0x1f or x in y]). A syntax warning is raised if the numeric literal is immediately followed by one of keywords andelseforifinis and or. In a future release it will be changed to a syntax error. (gh-87999)


  1. 以下未记录的 sqlite3 功能(在 Python 3.10 中已弃用)现在已被删除。


  • sqlite3.enable_shared_cache()

  • sqlite3.OptimizedUnicode

如果必须使用共享缓存,请使用 cache=shared 查询参数以 URI 模式打开数据库。

sqlite3.OptimizedUnicode 文本工厂自 Python 3.3 以来一直是 str 的别名。之前将文本工厂设置为 OptimizedUnicode 的代码可以显式使用 str,也可以依赖默认值 str。

--experimental-isolated-subinterpreters 配置标志(和相应的 EXPERIMENTAL_ISOLATED_SUBINTERPRETERS)已被删除。


  1. 之前描述的更改和其他可能需要更改代码的错误修正。


  • Python API 的变化:现在对正则表达式中的数字组引用和组名应用了更严格的规则。现在只接受 ASCII 数字序列作为数字参考。字节模式和替换字符串中的组名现在只能包含 ASCII 字母和数字以及下划线。

  • 删除了自 Python 3.10 以来不推荐使用的 randrange() 功能。以前,randrange(10.0) 无损转换为 randrange(10)。现在,它引发了一个 TypeError。此外,针对 randrange(10.5) 或 randrange('10') 等非整数值引发的异常已从 ValueError 更改为 TypeError。这也防止了 randrange(1e25) 会从比 randrange(10**25) 更大的范围中静默选择的错误。

  • 现在需要带有两个参数的 va_start(),例如 va_start(args, format) 来构建 Python。 va_start() 不再使用单个参数调用。

  • 添加了新的受限 C API 函数 PyType_FromMetaclass(),它使用额外的元类参数概括了现有的 PyType_FromModuleAndSpec()。

  • 基于 Py_UNICODE* 表示的旧版 Unicode API 已被删除。请迁移到基于 UTF-8 或 wchar_t* 的 API。

  • PyArg_ParseTuple() 等参数解析函数不再支持基于 Py_UNICODE* 的格式(例如 u、Z)。请迁移到 Unicode 的其他格式,例如 s、z、es 和 U。

  • 删除 token.h 头文件。从来没有任何公共标记器 C API。 token.h 仅设计为供 Python 内部使用。

2、Python 入门文档

1)Python 官方文档

https://docs.python.org/zh-cn/3.12/



2)菜鸟教程 | Python 基础教程

https://www.runoob.com/python/python-tutorial.html


3)廖雪峰 Python 教程

https://www.liaoxuefeng.com/wiki/1016959663602400



👉如果在阅读过程中有任何疑问,欢迎在评论区留言参与讨论!

发布于: 刚刚阅读数: 6
用户头像

👩‍🦰 深耕测试开发 2021.02.23 加入

⭐ 坚信做好每个当下,美好一定会不期而遇! 2018年至今 坐标大连,负责移动端SDK开发 2015年 入职腾讯,负责手机QQ iOS开发 软件评测师认证 高中和中职信息技术教师资格证

评论

发布
暂无评论
跟着官方文档学 Python 之:3.12 新变化_Python_甜甜的白桃_InfoQ写作社区