1、什么是模块?
模块(module),它特指就是xxx.py文件

2、如何导入模块?
如果默认没有在包中
import xxxx import random
import uuid, sys
import os.path as 别名
from 包路径 import 模块名称
from 包路径.模块名称 import 方法、类、变量
from functools import partial
3、常见模块功能
|-- math
|-- random
|-- uuid
|-- os
|-- sys
|-- time
|-- datetime
|-- calendar
|-- hashlib
|-- hmac
|-- base64

round全局函数,主要用于四舍五入
random:
目前所有的计算机API实现的随机都是伪随机数
|-- random.random() # 返回一个[0, 1)的随机数
|-- random.randint(n, m) # 返回[n, m]范围内的随机整数
|-- random.randrange(n, m) # 返回[n, m)范围内的随机整数
|-- random.choice(sequence) # 从一个序列中随机返回一个元素
|-- random.uniform(n, m) # 返回[n, m]范围内的随机数
|-- random.shuffle(列表) # 随机洗牌列表中的元素顺序

math
进行数学计算
|-- math.ceil(num) # 向上取整
|-- math.floor(num) # 向下取整
|-- math.abfs(num) # 求绝对值
|-- math.modf(num) # 以元组的形式返回整数和小数部分
|-- math.pi # 圆周率
|-- math.pow(num, num2) # 幂次方 num**num2
|-- math.sqrt(num) # 开平方根

os:
主要管理操作系统文件管理系统
|-- chdir(path) # 修改当前工作空间路径的
|-- curdir # 当前工作空间的路径
|-- os.getcwd() # 获取路径的绝对路径
|-- os.path.abspath(path) # 获取路径的绝对路径
|-- os.cpu_count() # 获取当前电脑的CPU架构
|-- os.device_encoding(fd) # 获取设备的编码
|-- os.getpid() # 获取进程编号
|-- os.getppid() # 获取当前进程的父进程编号
|-- os.kill() # 通过编号杀死进程
|-- os.listdir(path) # 遍历path路径下的所有文件和文件夹,以列表形式返回名称
|-- os.mkdir() # 创建一个单层文件夹(目录)
|-- os.makedirs() # 创建多层目录
|-- os.name # 获取操作系统名称
|-- os.rename() # 重命名
|-- os.remove() # 移除文件
|-- os.removes() # 移除多层目录
|-- os.rmdir() # 删除目录
|-- os.sep # 当前系统对应的文件分隔符

os.path:
推荐使用 from os import path 导入方式

|-- os.path.abspath(path) # 获取path的绝对路径
|-- os.path.altsep # 路径的分割符
|-- os.path.basename(path) # 获取路径对应的文件名称
|-- os.path.dirname(path) # 获取文件所在目录
|-- os.path.exists(path) # 判断文件是否存在
|-- os.path.getatime(path) # 获取文件最后的访问时间
|-- os.path.getctime(path) # 获取文件的创建时间
|-- os.path.getmtime(path) # 获取文件的修改时间
|-- os.path.getsize(path) # 获取文件大小,单位是B(字节)
|-- os.path.isdir(path) # 判断path是不是目录
|-- os.path.isfile(path) # 判断路径是不是一个文件
|-- os.path.isabs(path) # 判断路径是不是一个绝对路径
|-- os.path.islink(path) # 判断路径是不是一个链接(软连接、硬链接)
|-- os.path.ismount(path) # 判断路径是不是一个挂载文件(U盘、光驱等)
|-- os.path.join(path1, path2) # 完成路径的拼接,会自动根据系统生成分隔符
|-- os.path.split(path) # 分隔文件路径

time:
|-- time.asctime() # 返回当前时间,格式是西欧格式
|-- time.ctime() # 返回当前时间,格式是西欧格式
|-- time.gmtime() # 返回当前时间,时间对象,注意:时区是伦敦时区
|-- time.localtime() # 返回当前时间,时间对象,注意时区是当前时区
|-- time.sleep(seconds) # 让当前线程停止运行
|-- time.time() # 获取当前时间戳
|-- time.struct_time(元组) # 构造一个对应的时间对象
|-- time.strftime() # 将一个时间对象格式化为特定的字符串输出
|-- time.strptime() # 将特定的字符串时间转换为时间对象

datetime:
import datetime
|-- datetime.datetime.now() # 获取当前时间对象
|-- datetime.date(year, month, day) # 构造一个日期对象
|-- datetie.time(hour, min, seconds) # 获取时间对象
|-- str(datetime对象) # 格式化datetime对象为字符串
datetime子模块:
import datetime
datetime.datetime.xxxx()
from datetime import datetime

'astimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fold',
'fromisocalendar', 'fromisoformat', 'fromordinal', 'fromtimestamp',
'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond', 
'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second',
'strftime', 'strptime', 'time', 'timestamp', 'timetuple', 'timetz', 
'today', 'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 
'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']

|-- astimezone(时间对象)		# 返回当前时区对应的时间对象
|-- datetime.now()			# 返回当前时间对象
|-- ctime(时间对象)			# 一个符合欧美标准的时间字符串
|-- time(时间对象)			# 返回时间对象的时间部分
|-- date(时间对象)			# 返回时间对象的日期部分
|-- day
|-- now
|-- minute
|-- second
|-- microsecond				# 微秒

calendar模块:
日历模块
hashlib模块:
加密算法相关的模块
加密算法:
|-- 通过是否可逆
|-- 可逆加密
|-- 加密和解密是否使用同一个秘钥
|-- 对称加密 DES
使用同一秘钥加密和解密
|-- 非对称加密 RSA
使用一对公私钥对
|-- 不可逆加密(散列加密、hash加密、哈希加密)
md3、md4、md5
>>> md5 = hashlib.md5(“123”.encode(“utf-8”))
>>> md5.hexdigest()
‘202cb962ac59075b964b07152d234b70’
sha1、sha256、sha384 …
二进制的128位数组 ==> 32位字符串
使用场景:密码加密、文件校验
hash,引入密值 salt
hmac
import hmac
m = hmac.new(“123456”.encode(“utf-8”), “liujianhong”.encode(“utf-8”), “MD5”)
m.hexdigest()

uuid:具有唯一性
import uuid
s = uuid.uuid4()
s.hex
sys:
|-- argv # 脚本传参
|-- exit() # 退出系统
|-- getdefaultencoding() # 获取系统的默认编码
|-- getfilesystemencoding() # 获取文件编码
|-- setrecursionlimit(num) # 设置递归的极限值
|-- getrecursionlimit() # 获取递归的极限值
|-- getrefcount() # 获取对象的引用计数