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

Python包__init__.py中两种相对导入写法的语义差异咨询

两种写法存在明确语义差异,具体区别如下:

  • from . import module
    该写法仅将module模块对象本身导入到package1的命名空间中。用户调用module内的成员时,必须书写为package1.module.成员名的形式,module内部的属性、方法、类不会直接暴露在package1的顶层命名空间下。
  • from .module import *
    该写法会将module内的所有公开成员直接导入到package1的顶层命名空间。默认情况下会导入所有不以单下划线开头的成员,如果module内定义了__all__列表,则仅导入__all__列表中指定的内容。用户调用时可以直接使用package1.成员名,无需额外带上module前缀。

如果你的需求是把module内的内容直接暴露到package1顶层供用户调用,选择第二种写法即可;如果希望把module作为独立的子模块对外暴露,选择第一种写法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:15:03