模块
一 模块是什么:*****
模块 是一组功能的集合
python 中一个功能就是一个函数
一个py文件就是一个模块
例如:A.py 文件名 A.py 模块名 A
模块的分类:
1.自定义模块*****
(第三方模块也属于自定义 它是别的程序员写的)
关注如何自定义
2.内置模块 ****
是c语言写的 然后连接到python解释器中
3. 已经编译为DLL,c或c++ ***
不需要知道怎么来的 会用就行
4. 包 *****
包实际上是包含一堆模块的文件夹
之后详细将对于这四种模块 他们的使用方式 是一致的
二.如何定义模块:*****
创造一个py 文件 把你的功能写到文件中
三、如何使用模块:*******
import 关键字 用于导入模块到当前文件中
例如:import time
当执行import做了什么?****
1.创造一个命名空间
2.执行被导入的py中的代码 将里面的名字和地址对应关系 存储到命名空间中
3.在执行文件中 创造一个名字 该名字指向的地址就是 第一步创建的命名空间(模块的命名空间)
执行文件和被东安路的模块的命名空间 是相互独立的 ****
在导入模块中 所有的名字使用的都是自己空间中的 和调用者无关
import 的其他写法*****
1.import xxx as xxx
给模块取别名 用于简化书写
2.import xxx,xxxx
一次导入多个模块
3.from xxx,xxxx
从模块中导入某个名字到当前名称空间中
注意 要避免名称冲突
4.from xxx import xxx,xxx,xx
从模块中导入所有名称
__all__用于控制 使用者可以使用那些名称
5. from xxx import *
从模块中导入所有名称
6 from xxx import xx as xx
取别名
from 和import xx as xx
py文件的两种执行方式*****
1 作为执行文件(右键run)
2.作为模块被导入
__name__这个名称 可以获取当前执行状态
如果文件是__main__说明当前是执行文件
否则 说明是作为模块
于是乎有了以下代码
if __name__=='__main__':
print('作为执行文件')
else:
print('作为模块导入')
重复导入模块时 模块中的代码不会重复执行 仅在第一次导入时执行
模块的搜索顺序*****
内存中已经加载的 -> 内置模块 -> sys.path
通常我们编写项目是 会自己讲模块的路径加入到sys.path中