包的使用

包的使用

一、遵循三个步骤

1、产生一个包的名称空间

2、执行包下的__init__.py,将产生的名字存放于包的名称空间中

3、在当前执行文件中拿到一个名字aaa,该名字指向的名称空间

print(aaa.x)#就是问,aaa下面__init__.py要一个名字x
print(aaa.y)
print(aaa.m1)#就是问aaa下面__init__.py要一个m1

注意一点是:在包内是没有执行文件的要调用功能要通过上面的方法。 

如果我要在执行文件下找到c文件中的__init__.py

#在执行文件中
Import  aaa
from aaa import bbb
print(aaa.bbb.ccc.x)
#在bbb文件同级的__init__.py中输入import 
from aaa.bbb import ccc   #这一点很重要

二、相对导入和绝对导入

刚才我们上面写的都是绝对导入,但是是绝对导入又一个弊端就是文件名字被写死了,万一要改,就瞬间爆炸。

所以,我们要有相对导入。

# from nb import m1,m2,m3

# # 绝对导入
# from nb.m1 import f1,f2
# from nb.m2 import f3,f4
# from nb.m3 import f5,f6
# from nb.p1.m4 import f7


# 相对导入
from .m1 import f1,f2
from .m2 import f3,f4
from .m3 import f5,f6
from .p1.m4 import f7

一个 . 代表着前一个文件,这里代表着前面的nb。

两个 .. 代表着前面两个文件。

但是要注意的一点是相对导入只能要在你要的文件下面才可以用。

原文地址:https://www.cnblogs.com/wuchenyu/p/8745210.html