python-day17包

跨文件夹导入模块
1:有文件夹a,名下有ma功能,在文件夹外调用ma功能的话,  导入import a.ma    运用ma()  或者 from a import ma  ma()
2;假定a有多重文件夹,想要调用多重文件夹下的模块  则是 a.x.y一直点到那个模块名   或者 from a.x.y import 功能名
3:注意点:  .左侧必须是文件夹名


模块的两种被执行方式
1:第一种py文件自执行 
2:第二种py文件作为模块是被导入执行 
当调用py文件时 不想被Py文件自身执行所影响  则在被调用模块的py文件中运用 if __name__ == '__main__':即可


包
定义:就是模块的集合体,是一个文件夹来管理一系列有联系功能的模块,该文件夹我们称之为包,文件夹名就是包名

包和普通文件夹的区别:包中一定有__init__.py文件
py2中必须创建__init__  py3中建议创建,创建后可以在包中调用模块功能  

__init__.py文件
1)产生一个全局名称空间,提供给包的,此空间代表包名称空间
2)如果要使用包中模块 则必须在__init__文件中找到该文件的路径  可以使用 from ...import...来确定路径(1:指名道姓到某一个模块 2:指名道姓到某一个模块中的名字)
3) 调用包文件中的模块功能时 首先             import 包名  
                                              fn() 或者前面加点  x.y.fn()
一个点表示在当前文件夹  ..表示在当前文件夹的上一个目录  但是 .语法中  无论怎么使用不能出包    

# 导包完成的三件事
# 1)编译形成包中__init__.py文件的pyc文件
# 2)执行__init__.py文件,形成一个全局名称空间,将__init__.py文件中所有名字存放其中,该名称空间就代表包的名称空间
# 3)在导包的文件中,产生一个与包名相同的名字,指向包的名称空间(__init__.py文件的全局名称空间)

猜你喜欢

转载自www.cnblogs.com/wakee/p/10825508.html