标签:nbsp pytho 本质 port 代码 导入 产生 run ini
包(***)
1.什么是包
包就是包含有__init__.py文件的文件夹
包本质是一个模块,即包是用来导入使用的,包内部包含的文件也都是用来被导入使用的
2.为何要用包
包是文件夹,那文件夹就是用来组织文件的
首次导入包发生三件事
1 以包下的__init__.py文件为基准来产生一个名称空间
2 执行包下的__init__.py文件的代码,将执行过程中的名字都丢到名称空间中
3 在当前执行文件中拿到一个名字p1,该p1就是指向_init__.py的名称空间的
import p1 #导入包就是在导入包下的__init__.py文件
注意:
在python2中,包下必须有一个_init__.py的文件,而python3中即便没有也不会报错
当run文件与p1在同一文件下时
run文件需要使用p1中的模块时,只需在p1下__init__.py文件中将需要使用的模块import其中即可
当run文件与p1在不同一文件下时
需要在run文件中将p1父目录的路径添加到环境变量中
导入包需要注意的问题:
当凡是在导入语句中带点的,点的左边都必须是一个包
导入时每次只需从p1开始导入即可,找到p1是在run文件中处理
总结包的使用无非注意三点:
1 导入包就是在导包下的__init__.py文件
2 使用绝对导入,而导入的起始位置都是以包的顶级目录为起始点
3 但是包内部模块的导入通常应该使用相对导入,因为当修改顶级包名时,内部的导入就不需修改了
用.代表当前所在的文件(而非执行文件), ..代表上一级
强调:1相对导入只能包内部的模块之间互相导入使用
作业要求:
其中注释掉的为绝对导入方法,其它为相对导入方法!
2 ..上一级不能超出顶级包
run文件处理:
pkg下__init__.py处理:
sub2下__init__.py处理:
标签:nbsp pytho 本质 port 代码 导入 产生 run ini
原文地址:https://www.cnblogs.com/zhangshengxiang/p/9457515.html