python模块
定义
- 一个.py文件就是一个模块,它是Python的最小封装单位。
分类
- 内置模块:Python内部提供的模块,如time,random
- 自定义模块:自己编写的模块
- 第三方模块:别人写好的模块
组成
- 可执行语句:可以立即执行的语句,如print,函数调用等
- 定义语句:定义某个变量或者函数等的语句,如a = 10,def func()
模块的执行方式
- 脚本方式执行:用于测试阶段,测试模块功能以及排除错误
- 导入方式执行:用于生产阶段,为其他模块提供资源
如何判断模块当前的执行方式
- 使用__name__方法,判断模块当前处于脚本方式执行,还是被导入
__name__:如果模块是被导入的状态,打印此方法会返回模块本身的名字,否则返回的是固定的字符串__main__
![图片]()
![图片]()
自定义模块的编写
创建模块
- 即创建一个.py文件,即为创建一个模块
编写模块
- 定义语句:这部分是要提供给其他模块的资源
- 可执行语句:一般是用作模块功能的测试
- 测试模块:模块提供给其他人调用,但是模块中的可执行语句不能输出给调用者,所以需要编写测试模块,对可执行语句进行编排,在以脚本执行的时候打印可执行语句,但是如果被导入则不打印,这时可以使用上面的__name__方法
- 注释部分,为复杂的逻辑加上解释说明,一般使用多行注释
if __name__ == '__main__':
可执行语句
![图片]()
![图片]()
编写模块补充
- 拓展:使用__all__方法控制一个模块可被导入的成员个数(仅对from 模块 import方式的导入生效)
__all__ = ['成员1', '成员2',......]
![图片]()
![图片]()
模块的存放路径
- 第三方模块一般存放在:/$your_path/site-packages
- 内置模块存放在:/$your_path/lib/
- 自定义模块:要将其.py文件所在的路径放置在sys.path列表中,Python才能检索到该模块并正常使用,sys.path是一个列表,它包含了Python搜索模块的默认路径,有些像Linux的环境变量。
使用模块
导入模块的方式
- 只导入一个模块
import 模块名
from 模块名 import *
#二者的区别在于,使用第一种方式导入,再使用模块内部的功能时,必须加上模块名,不是很方便,但解决了变量名冲突的问题
#第二种方式,则不需要加上模块名,但有可能会与本模块内部的变量产生变量名冲突。
![图片]()
![图片]()
![图片]()
- 同时导入多个模块
import 模块1,模块2.....
#一般不建议使用这种方式
- 只导入模块中的指定成员
from 模块 import 功能1,功能2,.......
![图片]()
- 相对导入
#同一个项目下,不同模块之间的导入。(坑很多最好使用绝对导入,这种绝逼不会错)
from 绝对路径 import 成员
![图片]()
![图片]()
常用的内置模块random
- random.random():随机生成大于等于0小于1的浮点数
import random
print(random.random())
![图片]()
- random.uniform(a, b):随机生成大于等于a小于等于b的浮点数
import random
print(random.uniform(1, 6))
![图片]()
- random.randint(a,b):随机生成大于等于a,小于等于b的整数
import random
print(random.randint(1, 3))
- random.shuffle(x):将指定列表x随机打乱
l = [i for i in range(4)]
print(l)
import random
random.shuffle(l)
print(l)
- random.sample(x,k):从指定的对象x中取k个值
l = [i for i in range(4)]
import random
print(random.sample(l, 2))