Python3学习笔记:包

18 篇文章 1 订阅
18 篇文章 1 订阅

若目录下存在__init__.py,则该目录被python视为一个包(package)。

__init__.py也是一个模块,可以编写代码。但其主要功能是定义__all__。

当执行from packageName import *时,仅导入__all__所指定的内容。

__all__默认为package下所有模块,但不包括子package。

例如,目录结构为


在P1下的__init__.py中,重新定义__all__为

__all__=["m1"]

在tester.py中,依次调用m1,m2,m3

from p1 import *
if __name__ == '__main__':
    m1.fun1()
    print("m1.a=",m1.a)
    m2.fun1()
    m3.fun1()

虽然P2在P1目录下,且调用了from p1 import * ,但IDE会报错,提示未找到m2,m3。可见,由于m2未出现在P1的__all__中,所以未被引入。

当我们不再给__all__赋值,或将其修改为

__all__=["m1","m2"]

会发现,m2可以被识别,但m3仍为unresolved import。

可见,from p1 import *,只会讲p1下__all__中指定的模块导入,不会导入p1下的子包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值