Skip to content

Latest commit

 

History

History
39 lines (22 loc) · 2.29 KB

知识整理.md

File metadata and controls

39 lines (22 loc) · 2.29 KB

1 __future__库整理

__future__ 是 Python 中的一个特殊模块,它帮助开发者在当前的 Python 版本中导入未来版本的某些功能。由于 Python 语言不断发展,新版本会引入新的语言特性。这些特性可能会改变 Python 代码的解析方式或者行为。__future__ 模块允许开发者从未来的 Python 版本中提前使用这些特性,这样可以让开发者渐进地适应新版本的变化,同时保持代码向后兼容。

1.1 __future__ 模块的使用

使用 __future__ 模块非常简单。如果你想在你的代码中使用来自未来版本的 Python 的某个特性,你只需在文件的开始导入该特性。例如:

from __future__ import some_feature

这行代码会启用 some_feature,即使你当前使用的 Python 版本默认不支持它。

1.2 annotations 特性

annotations 是 Python 3.7 引入的一个 __future__ 模块的特性。在 Python 3.7 之前,当 Python 解析函数定义时,它会立即执行注解中的表达式。这可能会导致一些问题,比如当注解中引用了尚未定义的类型时就会出错。

Python 3.7 通过 from __future__ import annotations 引入了延迟注解解析的概念。当启用这个特性时,函数注解不会立即被解析,而是作为字符串存储。这意味着你可以在注解中引用尚未定义的类或类型,因为它们会在实际需要进行类型检查时才被解析。

例如,以下代码在 Python 3.7 以前的版本中会引发错误,因为 Node 类在使用之前尚未定义完全:

class Node:
    def __init__(self, next: Node = None):
        self.next = next

但是,如果你使用了 from __future__ import annotations ,这段代码就会正常工作,因为 Node 类型注解会被延迟解析,直到它完全定义好。

使用场景和好处

前向引用(Forward References):这是使用 annotations 最常见的场景,特别是在定义数据模型或者实现某些递归算法时。

代码兼容性:使得代码能在不同版本的 Python 中更容易运行,特别是在渐进地迁移到新版本的 Python 时。

性能提升:在某些情况下,延迟解析注解可以稍微提高代码的启动时间,因为它减少了初始化时的计算量。