Python 3.12 有什么新变化 📅 发布时间:2026/9/2 17:44:32 👁 浏览次数: csvdis.mathosos.pathpdbsystypes增加了 -- 命令行选项显示 N 个最慢的测试用例:python3 -m unittest --durations3 lib.tests.test_threading ..... Slowest test durations ---------------------------------------------------------------------- 1.210s test_timeout (Lib.test.test_threading.BarrierTests) 1.003s test_default_timeout (Lib.test.test_threading.BarrierTests) 0.518s test_timeout (Lib.test.test_threading.EventTests) (0.000 durations hidden. Use -v to show these durations.) ---------------------------------------------------------------------- Ran 158 tests in 9.869s OK (skipped3)由 在 gh-48330 中贡献。uuid性能优化字节码的改变演示和工具弃用请改用 。 由 在 gh-90953 中贡献。.常量, 已被弃用, 被 , 替代, 由 , 在gh-中贡献。: 弃用 。动用(obj,.abc.)去测验obj于运行之际有无达成。要是用于类型标注的情况, 那就动用 , 又或者明白无误地表明你代码所支持类型的并集(比如bytes | | )。提供的是, 原本想作为和的超类型的抽象基类。然而, 因为ABC不能有任何方法, 知晓一个对象是实例, 这并不能切实告诉你关于该对象的任何有用信息。在运行时以及对于静态类型检查器而言, 其他像常见缓冲区类型同样不能被当作是的子类型。倘若想要知晓具体情形, 那就请去进行查阅哈。此乃由 Jain置身于gh - 91896领域里所做出的贡献哟在未来版本里, 会因被弃用而予以移除。请采用可感知时区的对象去用 UTC 表示日期时间, 分别单独调用, 再将 tz 形参设置为。该内容由 Paul 在 gh - 中贡献而成。被弃用的, 是其中的isdst形参, 此由Alan在gh - 72346里贡献。: 已弃用下列类计划在 3.14 中移除:使用 类代替:由Jason R.贡献, 在gh - 93963中, 且由Hugo van参与。已不再使用针对于 copy 、以及 那些操作的支持, 它们未曾被编撰入文档、效率不高、在历史进程中充斥着诸多问题并且欠缺一致性。这将会在 3.14 的时候予以移除, 以此来大幅削减代码 以及维护方面的负担。是由 在 gh- 当中所做出的贡献在3.14里, 于Linux、BSD以及其他并非macOS的POSIX平台上, 默认的启动方法会变更为更具安全性的方法, 在这些平台当前默认是‘fork’(gh - 84559)。在运行期间添加相关警告被认定为干扰性过强, 原因是大部分代码都不会顾忌这个问题。当你的代码有‘fork’需求时, 务必要使用或API明确指明。参见。.( )和.( )已经被废止并且将会在3.14里被去除掉请改而使用。是由 在gh - 97850中作出的贡献该模块存在两个未写入文档的函数, 这两个函数自2起就已经被弃用, 然而直到3.12才添加了相应的内容, 它们将会在3.14中被移除, 此乃由和P. Smith在gh - 85984中所贡献。在因使用“ ”或者出现此警告之时, 解决办法是运用别的启动方式, 像“spawn”或者“ ”, 以此来应对。“的”参数, 已被弃用, 要改用 onexc, 这是由 Irit 在 gh - 中贡献的。: 字段, 和, 已被弃用。请改用。由Irit在gh-中贡献对 tar 归档进行提取, 却不指定相关内容的举措, 已经被废弃不用了, 一直延续到 3.14 这个版本, 在这个版本里, data 将会变成默认的过滤器, 要想知晓详细情况, 请去查阅相关资料。如今这个模块于执行真值测试之际将会发出。在此之前 , 实现会发出 , 然而C实现不会发出任何警告。这是由Jacob Walls在gh - 83122中完成的贡献。, 以及 的那种三参数签名形态 (type, value, ) 已然被废弃不用并且很有可能会在后续的 版本里边被移除掉。 请转而采用这些函数的单参数版本。 此乃由 Ofey Chan 在 gh-89874 中予以贡献的现今, 当一个模块的情形, 并非同于另一种状况的时候, 将会引发某种情况, 在之前的版本里, 那是另一种情况。这是由 Brett 在 gh - 65961 中所贡献的在模块之上实施设置 或 的这种做法已然被废弃不用了而且在 3.14 当中是会不再被设置的, 也不会被导入系统进而被纳入考虑范围之内。 此乃由 Brett 在 gh-65961 里所贡献的。针对布尔值的按位取反运算符, 也就是那个 (~), 已经被废弃不用了。它在3.16这个版本里, 将会抛出错误。请改用not, 用以执行布尔值的逻辑非运算。处于你确实要对付下层的 int, 进而去执行按位取反运算的少数场景当中, 请明确地将布尔值转换成整数值, 即: ~int(x)。这是由Tim在gh - 中所贡献的把这种在代码对象上进行访问的做法, 依据PEP 626, 在3.10里已被弃用, 然而一直等, 直到3.12时才添加了恰当的. 它有可能会在3.15中被移除. 由 在gh-中贡献计划在 3.13 中移除模块 (参见 PEP 594):其他模块API:计划在 3.14 中移除请改用 。 由 在 gh-90953 中贡献。: 已弃用 中的 isdst 形参。 由 Alan 在 gh-72346 中贡献。中已弃用的类使用 类代替:由 Jason R. 和 Hugo van 在 gh-93963 中贡献。有着针对copy以及等相关操作的, 那种未被写入文档的, 效率低下的, 历史进程中充斥着问题的, 并且不稳定的支持。这种支持将会在3.14当中被移除, 以此来显著降低代码量以及维护负担。此由在gh - 中进行贡献将默认的启动方法, 在当前默认采用 fork 的 Linux、BSD 以及其他非 macOS POSIX 平台上, 改成更安全的方法gh - 84559。为此添加运行时警告, 会带来糟糕的体验, 因为大部分代码并不关心这个问题。当你的代码需要 fork 时, 请使用 或 API 来明确地指明。参见。: 和 : 传入额外参数的做法已被弃用。此刻, .( )以及.( )会引发, 烦请改用。此由在gh - 97850里贡献现有的: .parse., 已经处于被弃用状态, 并非是能够用于公有 API。曾经是籍由 P. Smith 在 gh-88168 这个项目里所贡献的内容。计划在 3.15 中移除计划在 3.16 中移除一种做法——采用strm参数去给予自定义日志记录处理器支持, 此做法已然被废弃, 而且制定会在3.16里给剔除掉, 转而要运用参数来定义处理器, 这是由 于gh-之中贡献出来的。计划在 3.17 中移除计划在未来版本中移除以下API将会被移除尽管具体时间还未确定。: . 和 . 常量已被弃用并由 和 替代。 由 在 gh- 中贡献。 请改用 。 (gh-): 改用 方法。: 复数值必须是一个整数。: warn() 方法自 3.3 起已被弃用请改用 。对于输入而言, 文本模式的运用已经被废弃不用了, 要转而采用二进制模式: 在多线程的进程中调用 。请使用异常实例替代, 将元组值用作 形参当作实在参的这种做法, 已被弃用, 这是 pydoc. 所规定的。在当下 , 针对正则表达式里的 , 数字分组引用以及分组名称 , 将会是按照更为严格的 规则之形式为实施。与此同时 , 目前此形式条件下 , 仅仅是接受那些属于ASCII数字序列的情况作为数字引用。另外 , 字节串模式还有替换字符串之中的分组名称 , 如今仅仅是能够去包含ASCII字母 , 以及数字 , 还有下划线的字符在内。 此内容是由 在gh - 91760之中所作出的贡献, 和 模块。形参, 在 3.12 的时候就已经被弃用了, 要改用 onexc 形参。选项和协议的方法(gh-92332)。不再用于实现的内部类, 为保护使用该私有类用户的兼容性, 将至少在3.17之前提供兼容性, 此由Jelle 在gh- 中贡献。: 从测试用例返回不为 None 的值的做法已被弃用。函数已被弃用改用: ..write() 不应执行部分写入。关于对的真值测试, 已经被废掉不再使用了。在往后的发布版本当中, 它以后一直都会返回作为真的值的那个True值。建议大家使用明确表明的那种通过len函数接收elem参数或者elem不是None这种方式去进行测试。已弃用请改用 。移除和enumgzipimpimp.\\(\\),imp.\\(\\),imp.\\(\\): 添加锁的方案于3.3里被变更成模块层面的锁不怎么重要的常量, 有, 有, 有, 有, 有, 有, 有, 有, 有。iosmtpd要是非得运用共享缓存, 那就在以 URI 模式打开数据库之际, 借助 cache 查询参数。自3.3起成别名的文本工厂函数, 之前设为该函数所在空间东西的代码, 能显式用str, 或依赖同为str的默认值。由 E. 在 gh-92548 中贡献。ssl由 在 gh-89325 中贡献。xml.etree.其他事项移植到 3.12这一节, 罗列了, 之前所描述的, 那些更改, 还有, 有可能所需更改代码的, 其他错误修正。API 的变化目前, 模块会做这样的预期, 模块具备属性, 它是一个不带参数的函数, 且在当前解释器作为主解释器之际会返回True。任何有着自定义, 模块的库, 或者是应用程序, 都应该提供 (), 参见 gh-构建变化由贡献, 是在gh-90656里贡献的。现在需要 3.10 或更新版本。此刻, 要有2.71以及1.16.4, 方可再度生成。此由在gh-89886中进行贡献版本是来自的那个, macOS安装程序如今则使用3.0。C API 的变化新的特性代码对象的额外存储 (PEP 523):原有名称将继续可用直到对应的 API 发生改变。由 Petr 在 gh- 中贡献。针对PEP 697, 增添了相关API, 该API是用于扩展那种实例内存布局呈现不透明状态的类型。由 Petr 在 gh- 中贡献。引入了全新的函数, 该函数运用了额外的参数, 针对既有的情况予以了泛化处理。此为Jakob于gh - 93012中所做的贡献在 中添加了用于创建可使用 来调用的对象的 API:当下, 当一个类的方法被重新赋予值的时候, 该类的旗标会被去除掉。此举使得其能够被安全地应用于可变类型也就是不存在不可变旗标的堆类型之中。没有进行重载的可变类型如今继承了旗标。此乃Petr于gh - 93274中所贡献的有新增的情况, 存在旗标。它能够让用于扩展的类, 以数额更少的记录消耗, 去对对象以及弱引用予以支持, 从而占用数量更少的内存还能加快访问所具备的速度。在 中添加了使用 执行调用的 API:这表明, 调用协议的传入一顶端以及传出一末端当下均能够于其中予以运用, 此乃由Jakob在gh - 98586里所做的贡献。增添了两个全新的公共函数, 并且, 这两个函数能放任调用之际就在所有行进线程里设定追踪以及性能分析函数。这是由 Pablo 在 gh-93503 之中所贡献而出的。给C API增添了新函数, 能够用来设置给定了的字段。这是由Frost在gh - 92257里贡献的哟C API如今准许经由、加上牵扯到的API开展回调注册, 从而于字典被改动之际开展调用, 这主要是用以优化解释器、JIT编译器亦或者调试器, 此乃由Carl Meyer于gh - 91052里所作出的贡献添加了, 和API , 用于注册回调, 以接收类型变更通知。 由Carl Meyer在gh - 91051中贡献添加了, 用于注册回调以接收代码对象创建时通知的相关内容, 还有用于注册回调以接收代码对象销毁时通知的相关内容, 这即对应着API。此为Oren在gh - 91054中所贡献增设了, 增设了函数, 用于凭借名称去获取帧变量。此由, 此由在gh - 91248里所作贡献添加用于保存当前异常的, 以及用于恢复当前异常的, 这些函数就可以返回和接受单个异常对象, 而不像现在已经被弃用的那样是三个参数, 如此这般不容易出错并且更为高效, 由Mark在gh-中贡献这里添加了 ns1, 它会接受一个异常实例, 用于去取代那个现已被弃用的旧式 API ns, 而这个动作, 是由 Mark 在 gh- 项目里所贡献的。添加了, 作为便捷函数, 用于检索, 用于修改传递给异常的构造函数的, 这是由 Mark 在 gh- 中贡献。添加了, 它接纳一个异常实例, 用以替代旧式 API ()。此由 Irit 在 gh- 里作贡献由 Eddie 在 gh-84436 中贡献。增强提案684: 增添了函数以及相关内容, 能够用来构建具备单独全局解释器锁的子解释器。相关更多信息可查看相关材料是由Eric Snow在相关代码库中所贡献在3.12版本的受限C应用程序编程接口里, 和函数如今采用不透明函数来调用这一方式以予以实现因而将实现细节隐藏起来。由某在gh -中进行 这里“某”指代不明, 原句中未明确具体贡献者, 可根据实际情况替换成具体名字移植到 3.12不使用*函数: 要是不需要C特有的特性槽位或者设置实例大小, 那就借助元类去创建类型。倘若是你, 明晰能够安全予以跳过, 那就运用其中所包含元素, 去过滤弃用所发出的警告。和, 那般情况于其中将再也不会出现被调用的状况。之所以如此, 是由于客户端一般会依赖进程这个层级的全局状态, 而此形势下那些回调没办法使之形成恢复, 就宛如扩展模块状态似的那般。这同样规避了扩展程序于不予以支持或者并未被加载的子解释器之内运行的情形, 敬请参阅gh -去知晓更多详情。通过对其内部字段予以修改, 以此来提升性能。纵使其内部字段为私有的, 然而某些扩展模块会运用它们。内部字段不应再予以直接访问, 而是应当转而使用以...打头的API函数。新增加了两个暂定的API函数, 用以实现高效访问适配到单个机器字的的值:。靠设置而成的自定义分配器, 当下必然得是线程安全状态, 不管内存域究竟是怎样的情形。那些没有自身状态的分配器, 其中涵盖“钩子”这种情况, 是不会受到影响的。要是你的自定义分配器当前尚不是线程安全状态, 并且你对于相关指导素有需求的话, 那就请去创建一个全新的问题, 还要抄送给。弃用应当将API改为进行使用, 此为在gh-77782当中所贡献创建的做法是使用可变的基类, 这种做法已经被弃用, 并且将会在3.14中被禁用, (gh-95388)。. h头文件, 已遭到了弃用, 只是呢, 它依旧能够持续使用, 并且也并不存在着计划, 要将其给移除掉了。当下, 仅仅只需将. h予以涵盖, 便能够获取到其内容, 要是寻觅不到的话, 那么就添加Py这个前缀。.h 上有几个项目没有暴露因已被弃用的头文件, 将维持原来的名称, 来提供原来的内容。你的旧的代码能够维持不变, 除非分外的包含指令以及无命名空间宏, 会对你造成极大困扰。Petr在gh - 47146中作出贡献, 这是基于另外的未明晰内容以及Braun先前的工作。还有啥, 已经被动用废弃不再使用了。请去采用别的啥, 来进行替代。这是由Mark在gh-那里做出的贡献被弃用了的那个, 要改成用这个。 是 Irit 在 gh- 那边贡献的ns, 已然被弃用了, 要改用ns1, 这是由Irit在gh - 中作出的贡献。利用逗号或者来构建那所属元类为重载之物也就是重载了的类的这般做法已然被废弃不用, 请改成进行调用与之相应的元类, 是这个, 调用那个。计划在 3.14 中移除计划在 3.15 中移除于3.13版本以及比其更旧的版本当中, 能够借助 - 项目 去进行获取。用于配置 的初始化的函数在 3.11 中已弃用API 应与 一起使用。全局配置变量为了去设置这些选项, API 应当和 一起被使用。或者呢, 在运行的时候去获取这些选项, 可以借助 使用。计划在 3.16 中移除计划在未来版本中移除以下 API 已被弃用将被移除但目前尚未确定移除日期。移除将rtal()函数宏给移除掉了, 这是由 在gh - 85858中所进行的贡献。