python学习笔记——包

上篇:https://blog.csdn.net/qq_42489308/article/details/89813800

包(Package)

__all__的作用

python模块中的all属性,可用于模块导入时限制,如:
from module import *
此时被导入模块若定义了all属性,则只有all内指定的属性、方法、类可被导入。
若没定义,则导入模块内的所有公有属性,方法和类

sendmsg.py

__all__ = ['stest']

def stest():
    print("stest")

def sstest():
    print("sstest")
    
---------------------------------------

infomsg.py
from sendmsg import *
stest()
sstest()

前面我们已经介绍过,包是一种管理模块的手段,采用“包名.子包名.....模块名”的调用形式,非常类似文件系统中的文件目录。但是包不等于文件目录!

只有包含init.py文件的目录才会被认作是一个包!

image.png

上图中的example、p1和p2都是包,因为它们目录内都有__init__.py文件,并且p1和p2是example的子包。

__init__.py可以是空文件,也可以有Python代码,__init__.py本身就是一个模块,但是要注意,它的模块名是它所在的包名而不是__init__

举个包和模块之间调用的例子:

目录结构如下

 

互相导入示例

main.py
from msg import *
sendmsg.stest()

----------------------------------------------------------------
sendmsg.py
def stest():
    print("stest")

def sstest():
    print("sstest")
----------------------------------------------------------------
__init__.py
__all__ = ['sendmsg']
----------------------------------------------------------------

main.py
import msg
msg.infosmsg.test()
----------------------------------------------------------------
infosmsg.py
def test():
    print("itest")
----------------------------------------------------------------
__init.py
from . import *
__all__ = ['infosmsg']

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值