从坚果壳中的Python
自定义导入程序
Python提供的高级,很少需要的功能就是 能够改变某些或所有导入和来自的语义 语句。
重新绑定__import __
您可以重新绑定模块
__import__
的{{1}}属性 到你自己的自定义导入器功能 - 例如,一个使用 在“Python内置函数”中显示的通用内置包装技术 第174页。
在“您可以重新绑定模块builtin
的{{1}}属性”中,“模块__import__
”应该是“模块builtin
”吗?
“模块builtin
”bound to importlib.__import__
function by default的builtins
属性是?或者“模块__import__
”是否提供绑定到其builtin
属性的默认实现?
答案 0 :(得分:2)
是的,这是书中的拼写错误。在Python 2中,相同的模块名为__builtin__
(无s
),在Python 3中,它被命名为builtins
。
builtins.__import__
是与importlib.__import__
不同的功能。如果您要重新绑定builtins.__import__
,请保存参考。
builtins.__import__
为implemented in C,基本上会调用C-API PyImport_ImportModuleLevelObject
function。
importlib.__import__
是pure-Python function。 importlib
的目标是提供导入机制的纯python实现,因此可以更容易地被黑客入侵,而且这个功能也不例外。