You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Python中from A import B语句执行逻辑的疑问确认

关于from A import B的执行逻辑纠正

你的理解不正确,正确的执行流程如下:

  • 首先定位并初始化模块A(若尚未加载)
  • 检查模块A是否存在B属性:
    • 若存在,直接将该属性的引用导入当前命名空间
    • 若不存在,尝试导入模块A的子模块B(即A.B)
    • 子模块B导入完成后,Python会自动将这个子模块作为模块A的属性(也就是A.B)
    • 此时再次检查模块A的B属性(也就是刚导入的子模块B),随后将该子模块本身的引用导入当前命名空间
  • 若以上步骤均未找到符合要求的B,则抛出ImportError

举个实际的目录结构例子:

A/
    __init__.py
    B.py

执行from A import B时:

  1. 先加载A模块(对应__init__.py文件)
  2. 检查A的属性中是否有B,假设__init__.py里未定义B
  3. 尝试导入子模块A.B(对应B.py文件)
  4. 导入完成后,A.B成为A的属性
  5. 最终将A.B这个子模块本身导入当前命名空间,而非在B.py中查找名为B的属性

内容的提问来源于stack exchange,提问作者IcyBrk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:22:22