一.什么是模块?
定义的xx.py文件就是模块
二.模块的分类
我们可以通过三个方面将模块分为三类
第一类:通过模块的创建者
系统内置模块,即python官方提供的cpython解释器提供的模块
第二类:第三方模块(python之所以强大的原因,就是因为python中有大量的优秀的,好用的,第三方模块可供使用)
由一些优秀的程序员,组织,或者公司开发的模块,这种模块是不能直接用的,需要下载,安装模块后)才可以使用。
则可以使用 pip install xxxxx 来在线安装这个模块,离线安装的话,就必须先下载离线安装包(xxxx.zip),然后进行解压,cmd使用管理员身份进入,执行python install setup.py
第三类:自定义模块,顾名思义就是我们自己写的代码封装成的模块。
三.模块的导入
使用import关键字导入
import 模块名称
如果这个模块名称特别长的话,我们就可以使用关键字函数as给它设置一个别名
import 模块名称 as alias(别名)
from 包 import 模块名称(比较推荐这种模块的导入方法)
四.python常用的模块
1.random模块
该模块主要用来产生随机数(伪随机数)
random模块中常用的方法
randint () 产生随机数[m,n]
random() 产生一个0到1以内的随机数
uniform() 产生的基于正态分布的随机数
choice () 在容器中(序列)中随机筛选一个元素
2.math模块
ceil() 向上取整
floor 向下取整
注意:全局函数中isnan() # 判断某个数值不是数值的round 四舍五入
fabs() 求绝对值(和全局函数abs一样)
fmod() 求模的
isfinite() 判断是否无限
isnan() 判断某个数值不是数值
pi() 圆周率
pow() 幂次方,等价于全局函数pow
sqrt() 开平方根
3.os模块(系统的文件系统)
chdir(path) 修改当前工作目录
curdir os属性,获取当前目录,返回的是相对路径
chmod() 修改权限,Linux
cpu_count() 返回cpu的核对应的线程数
getcwd() 获取当前目录,注意是返回的绝对路径
getpid() 获取当前进程的进程编号
getppid() 获取当前进程的父进程的编程
kill() 通过进程编号杀死进程
os.linesep 对应系统的换行符
listdir() 返回对应目录下的文件及文件夹
makedirs() 创建目录,支持多层创建
mkdir() 创建目录,只支持一层创建
open() 创建文件,等价于全局open
pathsep 获取环境变量的分隔符 window ; linux :
sep 路径的分隔符 window \ linux /
remove(path) 删除文件
removedirs() 删除目录,支持多层删除,递归删除
system 执行终端命令
os.path 子模块
可以通过from os import path
abspath(相对路径) # 返回路径对应的绝对路径 dirname + basename = abspath
altsep # 查看python中的各种符号
basename # 文件名称
dirname # 文件所在的目录
exists # 判断文件或者目录是否存在rdir # 当前目录
getctime # 创建时间
getmtime # 修改时间
getsize # 获取文件的大小,单位是字节
isdir # 判断path是不是目录
isfile # 判断path是不是文件
isabs # 判断是不是绝对路径
islink # 判断是不是链接
ismount # 判断是不是挂载文件
join(p1, p2) # 拼接路径
sep # 路径分割符
split # 分割路径 abspath = dirname + basename
sys模块
api_version # python的内部版本号
argv() # 接收脚本参数的,注意第一个参数是脚本名称
copyright # 输出cpython的版权信息
sys.exit() # 退出系统
getdefaultencoding() # 获取默认编码,默认是utf-8
getfilesystemencoding() # 获取文件系统默认编码,默认是utf-8
getrecursionlimit() # 获取python对于递归的限制层数
setrecursionlimit(num) # 重新设置递归的限制层数
getrefcount(对象) # 获取对象的引用计数,垃圾回收机制中
getwindowsversion # 获取窗口的版本信息
version() # 获取版本信息
加密
1.加密算法的分类
以算法是否可逆进行分类
可逆算法:
是不是使用同一个密钥
使用同一个密钥
对称加密:
DES算法
不对称加密:
不使用同一个密钥
不可逆算法:哈希算法
md5数字摘要加密
shal1256
哈希算法
1.注意,hashlib所有hash操作起来一样
2.使用步骤:
1、创建算法对象(md5 sha256),返回一个算法对象
注意:参数值字节数据
md5 = hashlib.md5(“123456”.encode(“utf-8”))
2、如果不做盐值混淆,直接调用hexdigest()方法
md5.hexdigest()
3、盐值混淆
hash容易碰撞破解,一般建议使用盐值混淆。
md5.update(salt)
hmac
也是一个哈希加密库,而且使用对称加密。
首先会使用对称加密(秘钥就是盐值),之后将加密后的数据再做一次hash加密,盐值混淆,所以整个结果十分安全。
time模块
python提供操作时间和日期的模块
asctime() # 获取当前时间
ctime() # 获取当前时间
localtime() # 本地时间,方便于自己完成格式化
sleep(1) # 休眠时间,单位是秒
time() # 获取当前时间戳
strptime # 将一个特定格式的时间字符串转换为时间对象
strftime # 将一个时间对象格式化为特定的字符串
datetime模块
这个对time模块补充
datetime子模块
now() # 获取当前时间
calendar模块,用于数据清理
uuid(通用唯一识别码)
永不重复的字符串
uuid.uuid4().hex