4

这里import-hooks写的是元挂钩注册在sys.meta_path. 在这个列表中还有保存的finders那么meta hookfinder有什么区别呢?它们是一样的吗?为什么它们被保存在同一个地方?

4

2 回答 2

1

你引用的文件说:

通过向 sys.meta_path 添加新的 finder 对象来注册元挂钩

所以,我会说是的,它们是一样的。

于 2013-08-01T20:28:00.110 回答
1

它们是微妙的不同。本文件对进口机制进行了深入讨论。

元挂钩在导入处理开始时被调用。因此,它们可以参与所有类型的导入,包括诸如内置模块或冻结模块之类的导入,以及通过sys.path. 基本上在这个级别

sys.path在处理每个条目的过程中,稍后在导入处理中调用路径挂钩。他们有机会返回一个对象,该对象将全权负责在该特定路径条目中定位模块。例如,如果sys.pathcontains [/usr/lib/Python3, /home/user/mypython],你可以提供一个路径钩子,它可以做非标准的东西来定位你的项目中的模块mypython

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

于 2013-08-01T20:44:51.047 回答