Python 3.12让你的调试技能翻倍提升!

2023-06-1819:04:57编程语言入门到精通Comments1,820 views字数 1672阅读模式

Python计划于2023年10月发布3.12版本。这个版本带来了一系列令人激动的功能和改进。它的目标是通过提供一个更高效、功能更强大的平台来改善你的编码体验,从而提升你的编程技能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

1、增强的错误信息

Python在最近的版本中不断改进其错误信息。3.11版本通过指示在行中的确切位置,提供了更准确的错误信息。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

Python 3.12将这些增强功能提升到了一个新的水平,具体包括以下内容:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

  • 对于缺少模块的建议("你是否忘记导入X?"),现在包括了来自标准库的模块。
  • 对于与导入相关的常见语法错误,改进了错误建议。例如,如果你的代码中有import p from m,将会提示一个错误,询问是否打算写成from m import p。
  • 对于给定模块的导入错误,现在还包括来自导入模块的命名空间的建议。
  • NameError的建议现在在类实例中抛出时也会包含self。例如,如果名称speed未定义,错误消息将提出self.speed作为潜在的修正建议。这特别有用,因为在类实例中忽略self而导致实例变量错误是一个常见的错误源。

2、对Linux Perf Profiler的支持

广泛使用的Linux性能分析工具perf现在可以与Python 3.12程序一起使用。在过去,它只专注于跟踪Python运行时内的C级操作。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

通过Python 3.12,你现在可以激活perf来收集有关Python程序的详细信息。你可以在环境级别或者在Python程序中使用sys.activate_stack_trampoline函数来激活它。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

3、类型提示的改进

自从Python 3.5引入类型提示语法以来,Python的类型提示语法使得代码检查工具能够提前检测出各种错误。随着每个版本的发布,Python的类型系统不断发展,涵盖了更广泛的用例,并提供了增强的类型提示功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

TypedDict Python 3.12引入了TypedDict作为函数关键字参数类型提示的来源。这利用了版本3.11引入的Unpack可变泛型。下面是一个示例,演示了这个功能:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

class Movie(TypedDict):    name: str    year: int
def foo(**kwargs: Unpack[Movie]) -> None: ...

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

在这种情况下,函数foo可以接收与Movie TypedDict的内容相符的名称和类型的关键字参数:类型为str的name和类型为int的year。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

这个增强在为接受没有默认值的可选关键字参数的函数进行类型提示时非常有用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

类型参数语法 Python 3.12引入了一种更简洁的语法,用于指定泛型类、函数或类型别名中的类型。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

考虑以下示例:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

# 旧方法from typing import TypeVar_T = TypeVar("_T")def func(a: _T, b: _T) -> _T:    ...# 新型参数法def func[T](a: T, b: T) -> T:    ...

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

使用新的语法,无需显式导入TypeVar。相反,您可以使用func[T]语法表示泛型类型引用。还可以定义类型的边界,例如指定类型必须是一组类型中的其中一个。但是,这些类型本身不能是泛型的。此语法的一个示例是func[T: (str, int)]。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

4、垃圾回收

在Python 3.12中,垃圾回收(GC)机制发生了改变。以前,垃圾回收会在分配对象时运行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

然而,从Python 3.12开始,垃圾回收仅在Python字节码循环中的eval断点机制内运行。换句话说,它在执行一个字节码和下一个字节码之间运行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

此外,当CPython的信号处理程序检查机制被调用时,垃圾回收也会触发。这个调整使得在运行时外长时间运行的C扩展调用期间可以进行定期的垃圾回收。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

揭开Python 3.12的面纱

Python 3.12引入了一系列令人激动的功能和改进,为您的编码体验带来革命性的变化。通过改进的错误信息、增强的类型能力、对Linux Perf Profiler的支持以及优化的垃圾回收,Python 3.12为您提供了编写高质量、高效的代码所需的工具。拥抱Python的力量,将您的编码技能提升到新的高度。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/47404.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/47404.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定