Python3.12中的新功能

Posted DTCLOUD

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3.12中的新功能相关的知识,希望对你有一定的参考价值。

什么是 3.12.0a6

Python 3.12仍在开发中。但是今天我们将看看Python 3.12.0a6,这是七个计划中的alpha版本中的第六个。

alpha 版本的目的是更轻松地测试新功能和错误修复的当前状态,以便将来为我们提供无错误版本。

在 Alpha 版期间,功能可能会在 Beta 版本开始之前添加(2023-05-08,到目前为止不是),如有必要,可能会删除或修改,直到候选版本。不要忘记 Python 3.12.0a6 是一个预览版本,不建议用于生产环境。

即将推出什么?

改进的错误消息
如您所知,借助 Python 3.11 的强大功能,您可以使用异常组引发多个异常,还可以向异常添加注释,这有助于您轻松提供有关异常的详细信息。

在 Python 3.12.0a6 中,我们将获得更多改进的错误消息和更多异常,这些异常可能是由拼写错误引起的,这些异常会向用户提供灵活性建议。

当 NameError 提升到顶层时,标准库中的模块现在可以选择作为解释器提供的错误消息的一部分进行建议。Pablo Galindo为gh-98254做出了贡献。

>>> sys.version_info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name \'sys\' is not defined. Did you forget to import \'sys\'?
class A:

   def __init__(self):

       self.blech = 1


   def foo(self):

       somethin = blech
>>> A().foo()
  File "<stdin>", line 1
    somethin = blech
              ^^^^^
NameError: name \'blech\' is not defined. Did you mean: \'self.blech\'?

增强了当用户输入从 y 导入 x 而不是从 y 导入 x 时出现语法错误警告消息。 Pablo Galindo 为 gh-98931 做出了贡献。

>>> import a.y.z from b.y.z  
File "<stdin>", line 1
    import a.y.z from b.y.z
    ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Did you mean to use \'from ... import ...\' instead?

由模块>导入名称>语句失败导致的 ImportError 异常现在根据模块>中可用的名称提供名称>值建议。Pablo Galindo为gh-91058做出了贡献。

>>> from collections import chainmap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name \'chainmap\' from \'collections\'. Did you mean: \'ChainMap\'?

Linux “perf” Profile 支持
Linux perf 探查器支持在跟踪中报告 Python 函数名称。

“Wstr”和“wstr_length”
wstr并且 unicode 对象的 C 实现的成员将被删除,根据 PEP 623。wstr_length

单元测试模块

删除了许多长期弃用的方法和类,这些方法和类自 Python 3.1 或 3.2 从模块中删除以来已被弃用。unittest

删除的模块、类、函数、方法

smtpd和(已弃用的)模块已被删除(查看 PEP 594 和 PEP 632)。 模块仍然会提供软件包,默认情况下安装在 virtualenvs 和许多其他地方。distutilsThe distutilssetuptools

一些旧的、损坏的和不推荐使用的函数、类和方法已被删除。

反斜杠转义

从现在开始,字符串中的反斜杠转义序列使用语法警告而不是弃用警告。

整数

为了准备性能改进,整数的内部表示形式已更改。(作为内部细节,这应该不会影响大多数用户,但它可能会导致 Cython 生成的代码出现问题。

新模块

没有发布新模块。

改进的模块

以上是关于Python3.12中的新功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在安装pip3以及第三方python库

Linux安装python3.8

Linux安装python3.8

Linux安装python3.8

Linux安装python3.8

Linux安装python3.8