LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 233|回复: 0

相对导入

[复制链接]
发表于 2023-12-31 01:28:24 | 显示全部楼层 |阅读模式
相对导入
当包由多个子包构成(如示例中的 sound 包)时,可以使用绝对导入来引用同级包的子模块。 例如,如果 sound.filters.vocoder 模块需要使用 sound.effects 包中的 echo 模块,它可以使用 from sound.effects import echo。
你还可以编写相对导入代码,即使用 from module import name 形式的 import 语句。 这些导入使用前导点号来表示相对导入所涉及的当前包和上级包。 例如对于 surround 模块,可以使用:
from . import echofrom .. import formatsfrom ..filters import equalizer

注意,相对导入基于当前模块名。因为主模块名永远是 "__main__" ,所以如果计划将一个模块用作 Python 应用程序的主模块,那么该模块内的导入语句必须始终使用绝对导入。
多目录中的包
包还支持一个特殊属性 __path__ 。在包的 __init__.py 中的代码被执行前,该属性被初始化为一个只含一项的列表,该项是一个字符串,是 __init__.py 所在目录的名称。可以修改此变量;这样做会改变在此包中搜索模块和子包的方式。
这个功能虽然不常用,但可用于扩展包中的模块集。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表