一、自定义模块
- 什么是模块?
在python中封装语句的最小单位就是模块。一个.py文件就是一个模块 - 什么是自定义模块?
实际上就是定义一个.py文件
包含:变量定义、可执行语句、for循环、函数定义。。。统称模块的成员 - 模块的运行方式
- 脚本方式:直接用解释器执行,或者在pycharm中运行。。。
- 模块方式:被其他的模块导入。为导入它的模块提供资源。自定义模块被其他模块导入时,可执行语句会立即执行
__name__
属性的使用
在脚本方式运行时,__name__
是固定的字符串:__main__
在以模块方式导入时,__name__
就是本模块的名字- 系统导入模块的路径
- 内存中:如果之前成功导入过某个模块,直接使用已经存在的模块
- 内置路径中:安装目录下/lib
- sys.path:是一个路径的列表
若上述路径都找不到,需要动态修改sys.path
import sys
import os
sys.path.append(os.path.dirname('__file__') + '需要导入模块所在文件夹')
- 新建一个模块的模板
def main():
pass
if __name__ == '__main__':
main()
- 导入模块的多种方式
- import XXX # 导入一个模块的所有成员
- import aaa, bbb # 一次性导入多个模块的成员(不建议这种写法,最好分开写)
- from xxx import aaa # 从某个模块中导入指定的成员
- from xxx import aaa, bbb # 从某个模块中导入多个成员
- from xxx import * # 从某个模块中导入所有成员
- 使用别名避免成员名字冲突 :alias
# 给导入模块的成员起别名
from time import time as t
t()
# 给模块起别名
import time as ti
ti.time()
- from xxx import *
使用__all__
控制导入的成员,__all__
就是个列表
from time import *
__all__ = ['time']
- 相对导入
from 相对路径 import XXX
# 相对路径:包含了点号的一个相对路径
# 一个. 表示当前的路径
# 两个. 表示的父路径
二、常用模块
- random
import random
# 获取0~1随机一个浮点数
i = random.random()
print(i)
# 获取a~b中随机一个整数
i = random.randint(1, 2)
print(i)
# 获取a~b中随机一个浮点数
i = random.uniform(1, 5)
print(i)
# 将一个可变的数据类型中的元素打乱
l1 = [i for i in range(10)]
random.shuffle(l1)
print(l1)
# 从一个可迭代对象中随机抽取K个数据,组成一个新的列表
l1 = [i for i in range(10)]
l2 = random.sample(l1, 5)
print(l1)
print(l2)