模块的定义
解决的问题:不易维护,效率低,
如:有10个文件,每个文件有50个函数,有一些相同功能或者相似功能的函数,代码冗余,重复性高,我们应该讲这10个函数提取出来,放在一个文件中,随用随拿.
优点:节省代码,容易维护,组织结构更清晰
模块的分类:
内置模块,标准库,Python解释器自带的,time os sys等等 200多种
第三方库,各种大神写得一些模块,通过pip install...安装
自定义模块,自己写得模块
import
#引用模块发生的三件事:
1.将.py文件加载到内存.
2.在内存中创建一个以.py文件命名的名称空间
3.通过.py文件的名字的名称空间的名字.等方式引用此模块的名字(变量,函数名,类名等等)
#坑:
通过import引入,使用.的方式引用模块的名字时,一定是从此模块中寻找.
通过import引用模块, 他有自己的独立名称空间,与当前执行文件没有关系
模块的别名
# 将一个比较长的模块名化简成简单的
import xxxxxx as aa
1. 书写方便
2. 简化代码
from x import xx as xxx
from... import...
#相当于从.py文件的全局变量中将变量与值得对应关系 复制到当前执行文件的全局名称空间中.
优点:使用起来方面
缺点:容易混淆
坑:引用模块中的函数,如果此函数用到了一些变量,这些变量还说从此模块中寻找,不会改变当前执行文件的变量
#导图多个名字
from x import xx
from x import xx2
from x import xx3
from ... import * 尽量别单独用
1.将所有的名字复制过来,无用功
2.容易覆盖
与__all__配合使用(写在模块文件中)
py文件的两种功能
1,py文件的第一个功能:执行文件(承载代码)脚本.
直接打印__name__
返回 __main__
2.py文件的第二个功能:模块(被执行文件)
直接打印__name__
返回 模块名
作用:用来控制.py文件在不同的应用场景下执行不同的逻辑(或是在模块文件中测试代码)
模块的搜索路径
寻找模块的路径:内存----> 内置模块----> sys.path中
只要这三个地方:内存,内置模块,sys.path这三个地方可以找到这个引用的模块的路径,这个模块就可以直接引用到.
import sys
sys.path.append(r" ")
#手动添加模块路径