什么是 Finder 和 Meta Hook 的区别?

4

import-hooks中提到,元钩子(meta hooks)被注册到sys.meta_path中。此列表还包括查找器(finders)。那么元钩子查找器有什么不同?它们是相同的东西吗?为什么要将它们保存在同一个地方?

2个回答

1
您引用的文档说:
元钩子是通过将新的查找器对象添加到sys.meta_path来注册的。
所以,我认为它们是同一件事。

1

它们之间有细微的差别。这个文档对导入机制进行了详尽的讨论。

元钩子在导入处理开始时被调用。因此,它们可以参与所有类型的导入,包括内置模块或冻结模块等导入,以及通过sys.path开始处理基于磁盘的模块位置。基本上,在这个层面上

路径钩子在导入处理过程中稍后被调用,处理每个sys.path条目时。它们有机会返回一个对象,该对象将完全负责定位特定路径条目中的模块。例如,如果sys.path包含[/usr/lib/Python3, /home/user/mypython],您可以提供一个路径钩子,它可以对项目mypython中的模块进行非标准的定位操作。

这两个钩子都允许您提供一个查找器,它可以完全负责在特定上下文中定位模块。例如,元路径钩子用于从zip文件中导入模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接