这里import-hooks写的是元挂钩注册在sys.meta_path
. 在这个列表中还有保存的finders。那么meta hook和finder有什么区别呢?它们是一样的吗?为什么它们被保存在同一个地方?
问问题
511 次
2 回答
1
你引用的文件说:
通过向 sys.meta_path 添加新的 finder 对象来注册元挂钩
所以,我会说是的,它们是一样的。
于 2013-08-01T20:28:00.110 回答
1
它们是微妙的不同。本文件对进口机制进行了深入讨论。
元挂钩在导入处理开始时被调用。因此,它们可以参与所有类型的导入,包括诸如内置模块或冻结模块之类的导入,以及通过sys.path
. 基本上在这个级别
sys.path
在处理每个条目的过程中,稍后在导入处理中调用路径挂钩。他们有机会返回一个对象,该对象将全权负责在该特定路径条目中定位模块。例如,如果sys.path
contains [/usr/lib/Python3, /home/user/mypython]
,你可以提供一个路径钩子,它可以做非标准的东西来定位你的项目中的模块mypython
这两个钩子都允许您提供一个finder
可以完全负责在特定上下文中定位模块的函数。例如,元路径挂钩用于从zip
文件中导入模块。
于 2013-08-01T20:44:51.047 回答