finder和meta hook有什么区别?

时间:2013-08-01 19:39:25

标签: python python-3.3

此处import-hooks写明元挂钩已在sys.meta_path中注册。此列表中还有 finders 。那么 meta hook finder 之间有什么区别?它们是一样的吗?为什么他们保持在同一个地方?

2 个答案:

答案 0 :(得分:1)

您引用的文件说:

  

通过向sys.meta_path

添加新的finder对象来注册Meta钩子

所以,我会说是的,他们是一回事。

答案 1 :(得分:1)

它们是微妙的不同。这个document提供了对进口机制的全面讨论。

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

稍后在处理每个sys.path条目期间的导入处理中调用路径挂钩。他们有机会返回一个对象,该对象将负责在该特定路径条目中查找模块。例如,如果sys.path包含[/usr/lib/Python3, /home/user/mypython],您可以提供一个路径挂钩,它可以执行非标准内容来查找项目中的模块mypython

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