导入Python包test后,子模块p1/p2/p3是否被导入及访问方法
Python包导入子模块的问题解答
1. 直接import test as t不会自动导入子模块
当你执行import test as t时,Python只会加载包根目录下的__init__.py文件,不会自动导入p1.py、p2.py、p3.py这些子模块。此时t这个命名空间里仅包含__init__.py中定义的内容,无法直接访问p1、p2、p3。
2. 两种访问子模块的方式
方式一:单独导入子模块
在import test as t之后,你可以按需单独导入子模块:# 方式A:将子模块关联到包命名空间 from test import p1, p2, p3 # 之后可通过t.p1 或直接p1访问 t.p1.some_func() p1.some_func() # 方式B:直接导入子模块并重命名 import test.p1 as p1 p1.some_func()方式二:修改包的
__init__.py文件
在test包的__init__.py中添加以下代码,把子模块提前导入到包的命名空间:from . import p1, p2, p3这样当你执行
import test as t时,p1、p2、p3会被自动加载,直接通过t.p1、t.p2、t.p3就能访问子模块内的内容。
内容的提问来源于stack exchange,提问作者sachin rawat
相关产品推荐
相关产品推荐

