包的使用
1.什么是包
一个含有__init__.py文件的文件夹,包的本质就是一种模块,模块就是只用被导入的,所以包内的文件都是用来被导入的。
2.为何要使用包
随着模块文件的增加,我们需要用文件夹将模块组织起来,提高程序的结构性和可维护性。
3.包的应用
模块名约定用全小写
包内的模块没有右键运行的需求
part1:
import aaa
导入aaa其实是导入包aaa下的__init__.py文件
1.产生一个包的名称空间
2.执行包下的__init__.py(初始化导入)文件,将产生的名字存放于包的名称空间中
3.在当前执行文件中拿到一个名字aaa,该名字指向包的名称空间
print(aaa.m1) #aaa.m1 就是问aaa下的.__init__.py要一个名字m1
part2:
强调:
1.在导入时带点的,点的左边必须是一个包,这是导入包特有的语法
2.包内,模块直接的导入应该使用from。。。import 。。。
3.from 。。。 import。。。,import后必须是一个明确的名字,没有任何的前缀
1.在导入时带点的,点的左边必须是一个包,这是导入包特有的语法
2.包内,模块直接的导入应该使用from。。。import 。。。
3.from 。。。 import。。。,import后必须是一个明确的名字,没有任何的前缀
例如: from a.b.c.d.f import g.h.x #错误
1.f左边必须都是包
2.import后的名字不能有任何前缀
1.f左边必须都是包
2.import后的名字不能有任何前缀
part3:
绝对导入与相对导入
绝对导入:以顶级包作为起始
相对导入(推荐使用):不需考虑执行文件,.表示当前文件的路径,..表示所在文件上一级目 录。用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)
强调:
1. 相对导入只能包内部的模块之间互相导入使用
2. ..上一级不能超出顶级包