__import__() 底层 import 函数
最后更新:2026-09-22
__import__() 底层 import 函数
__import__ 是 import 语句底层调用的函数;日常请用 import 语句。仅在动态导入场景使用。
| 分类 | 内置函数 |
|---|---|
| 类型 | 内置函数 |
| Python 版本 | all |
📝 语法
__import__(name, globals=None, locals=None, fromlist=(), level=0)
⚙️ 参数
| name 必选 | 模块名(字符串)。 |
|---|---|
| globals 可选 | 全局命名空间字典。(默认值:None) |
| locals 可选 | 局部命名空间字典。(默认值:None) |
| fromlist 可选 | 要导入的子模块或属性名列表。(默认值:()) |
| level 可选 | 相对导入层级;0 表示绝对导入。(默认值:0) |
返回值:返回导入的顶层模块对象(而非 fromlist 中的属性)。
💥 异常
ImportError— 模块不存在或导入过程出错时抛出。
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
4.0
⚠️ 警告 动态加载不可信模块名有安全风险;日常请用 import。
🏷️ 相关内置函数
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Q为什么不直接调 __import__() 而是用 import 语句?
Aimport 语句会处理名字绑定、fromlist 语义等细节;__import__() 只是底层实现函数,日常导入用 import 即可。
Q__import__('math') 返回什么?
A返回 math 模块对象。注意它返回的是顶层模块:import a.b 时 __import__ 返回的是 a 而不是 b。
Q想动态导入模块用什么?
A优先用 importlib.import_module(name),它返回指定的模块而非顶层模块,语义比 __import__ 清晰。
Q动态导入不可信模块名有风险吗?
A有,可能加载并执行任意代码;模块名来自用户输入时必须严格校验白名单。