【问题标题】:What is the default binding to the `__import__` attribute of the module `builtin`?模块 `builtin` 的 `__import__` 属性的默认绑定是什么?
【发布时间】:2017-06-20 14:11:10
【问题描述】:

简而言之,来自 Python

自定义导入器

Python 提供的一个高级的、很少需要的功能是 更改部分或全部导入和从语义的能力 声明。

重新绑定 __import__

可以重新绑定模块builtin__import__属性 到您自己的自定义导入器函数——例如,使用 “Python built-ins”中显示的通用内置包装技术 第 174 页。

  1. 在“您可以重新绑定模块builtin__import__属性”中,“模块builtin”是否应该改为“模块builtins”?

  2. 是“模块__import__ 属性builtinbound to importlib.__import__function by default?或者“模块builtin”是否提供绑定到其__import__属性的默认实现?

【问题讨论】:

  • 1.是的。这可能是编辑错误。
  • 2.不,它绑定到builtins.__import__。如果重新绑定,请保存该函数。
  • 我认为this 是相关的。

标签: python python-3.x python-import python-internals python-importlib


【解决方案1】:
  1. 是的,这是书中的错字。在 Python 2 中,相同的模块被命名为 __builtin__(不是 s),在 Python 3 中,它被命名为 builtins

  2. builtins.__import__ 是与importlib.__import__ 不同的函数。如果您要重新绑定builtins.__import__,请保存参考。

【讨论】:

  • 谢谢。你的意思是importlib.__import__ 实现与builtins.__import__ 相同的东西吗?它们之间的唯一区别是它们是用哪种语言实现的?
  • @Tim:没错,这两个目标做同样的事情。
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 2011-12-11
  • 2010-12-06
  • 1970-01-01
  • 2017-11-23
  • 2020-04-12
  • 1970-01-01
相关资源
最近更新 更多