一、模块
1、 什么是模块:已经写好的一组功能的集合,别人写好的函数,变量,方法放在一个文件里(这个文件可以被我们直接使用),这个文件就是模块。
二、模块的调用
1、from xxx import xxx as x // import xxx :1、命名空间 :模块和文件在不同的命名空间
2、为模块起别名
2、 一行导入多个模块 :1、内置模块
2、 扩展模块(第三方模块)
3、 自定义模块
2、*与__all__的关系:__all__能够约束*导入的变量的内容
三、模块引用中的情况
1、模块的加载与修改:已经被导入的模块发生了修改不会被感知到的
2、模块的循环引用:模块之间不允许循环引用
3、把模块当成脚本运行
方式:1、cmd ,在python中直接运行就是一个脚本
2、导入一个模块
当一个py文件:1、当作一个脚本时:能够独立提供一个功能,能自主完成交互
2、当作一个模块时:能够被导入这个功能,不能自主交互
一个文件用的__name__变量:1、当这个文件被当作脚本运行时,__name__="__main__"
2、当这个文件被当作模块导入时,__name__="模块的名字"
4、模块的搜索路径:和被当作脚本运行的文件,同级目录下的模块可以被直接导入,除此之外其他路径下的模块在被导入的时候,需要自己修改sys.path列表
path=" "
sys.path.append(path)
四、模块导入的过程
1、找到这个模块
2、判断是否被导入
3、如果没有被导入:
- 常见一个属于这个模块的命名空间
- 执行
五、包
1、什么是包:文件夹中有一个__init__.py文件;是几个模块的集合
2、import 包
导入一个包相当于执行了这个包下面的__init__.py文件
导入一个包,不意味着这个包下面的所有内容都是可以被使用的
3、相对导入:含有相对导入的文件不能被执行,必须放入包中被导入的调用才能正常下hi用
4、绝对导入的缺点:所有的导入都要从一个根目录下往后解释文件夹之间的关系,如果当前导入的包的文件和被导入包的的位置发生变化,那么所有__init__.py文件都要做出相应的调整。在执行一个py脚本的时候,这个脚本和这个脚本同级的模块中只能用绝对导入