python 包 __all__

  • 模块: .py文件
  • 包:在一个文件夹下有多个.py文件,并且有__init__.py 文件
  • import 包 导入包时__init__.py被执行,如果__init__.py为空,则无法使用模块,如果既把模块也导入了
  • 那么将来可以调用包里面的模块。
  1.  下面有sendmsg.py 和recive.py模块 以及__init__.py 存在于Testmsg文件夹下;

main.py 采用 sendmsg.test1()

  • 根据 main.py 中的 from TestMsg import * 和 __init__中的__all__来导入模块;
  • 比如__all__中只有sendmsg模块 那么最后只有sendmsg 模块被导入
#receive.py

def test2():
    print("-----recvmsg-test2---")
#sendmsg.py

def test1():
    print("----sendmsg-test1-----")
#__init__.py

__all__ = ["sendmsg"]
#main.py

 '''导入Testmsg 这个包,Testmsg含有sendmsg.py、recive.py模块以及__init__.py
当导入这个包的时候会首先执行 __init__.py,所以如果__init__.py 有打印语句那么将会打印'''
from TestMsg import *

sendmsg.test1()#调用模块sendmsg.py中的test1方法

main.py 采用 Testmsg.sendmsg.test1()

  • main.py中直接是 import TestMsg 所以根据__init__来导入所需的模块
  • from TestMsg import * 这句此时放在__init__.py里面,main.py 执行 import  TestMsg 会首先运行__init__.py,所以sendmsg会导入到Testmsg这个包里面(暂且这么认为),因此在调用的时候要加上包的名字
#__init__.py

__all__ = ["sendmsg"]

from TestMsg import * #导入TestMsg包中的所有模块,但__all__中只有 sendmsg所以最后只导入sendmsg模块

#from . import recvmsg #从当前路径下导入recvmsg 模块
#main.py

 '''导入Testmsg 这个包,Testmsg含有sendmsg.py、recive.py模块以及__init__.py
当导入这个包的时候会首先执行 __init__.py,所以如果__init__.py 有打印语句那么将会打印'''
import Testmsg

Testmsg.sendmsg.test1()#调用模块sendmsg.py中的test1方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值