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

Python模块导入两种方式对比:间接引用还是直接导入更优?

结论

第二种直接显式导入全部所需依赖的方案更好,你担心的重复导入占用额外内存的问题完全不存在。


原因解释

1. 重复导入不会额外占用内存

Python的模块加载有全局缓存机制:所有已经加载的模块都会被存到sys.modules字典中,同一个模块在整个解释器运行周期内只会被初始化加载一次,后续所有导入操作都是直接引用已缓存的模块对象,不会重复执行模块代码,也不会额外占用内存。就算你在100个文件里都import file1,内存里也只会有一份file1的实例。

2. 间接导入的方案有明显缺陷

  • 可读性极差:其他维护者(包括几个月后的你自己)看到file2.file1.GreetingCard时,无法直接判断GreetingCard的来源,必须额外翻阅file2的代码才能理清依赖关系,大幅提升理解成本。
  • 稳定性极低:该写法完全耦合了file2的内部实现逻辑,如果后续file2的代码调整,比如移除了对file1的导入、修改了导入别名(比如改成import file1 as greeting_lib),你的代码会直接报错,完全没必要把自身逻辑的稳定性绑定在其他模块的内部导入细节上。
  • 写法冗余繁琐:调用类的路径层级更多,写起来比直接调用file1.GreetingCard麻烦很多。

3. 显式导入是Python社区公认的最佳实践

Python的设计原则里明确提到「显式优于隐式」,显式列出所有依赖能让代码的依赖关系一目了然,不管是后续排查问题还是重构代码,成本都会低很多。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:12:00