38-包

包(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文件的目录才会被认作是一个包!
在这里插入图片描述
上图中的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’]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部