函数模块
一、函数模块的作用(为什么要有函数模块)
1、函数模块可以减少代码量
2、函数模块方便阅读
3、函数模块维护性强
二、函数模块的本质以及调用方法
1、函数模块的本质就是一个.py结尾的文件,该文件内写入大量函数
2、必须用import来引用函数模块,在调用函数模块时必须以"模块名.函数名"来调用函数模块中的函数。
3、有的时候我们只需要用到模块中的某个函数,也可以用“from 模块名 improt 函数1,函数2”的方式来引用该模块,但只是一次引用,不建议使用。
三、函数模块的分类
1、内置函数模块:系统自带的函数模块,我们只管调用它就可以了,在python环境里是看不到内置模块的,是在python解释器里面写好了的。
2、第三方函数模块:系统中自带了些别人写好的模块,称为第三方模块,该模块储存的路径在python软件安装路径的Lib下面(储存在系统环境里)。
3、自定义模块:自己定义的模块
4、import导入模块时的加载顺序:先从python解释器中查找,再从系统环境(Lib)中查找,最后在自定义的路径下查找。
四、time内置模块详解
1、time内置模块
1.1时间的表达形式
在python中时间的表达形式有三种,分别为时间戳,结构化时间(struct_time),和格式化的时间字符串。
时间戳:从1970年一月一号的零点零分零秒开始按秒计算的偏移量,其返回的值是个float类型。
结构化时间:struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
字符串字符串:如'1998-10-10'(分隔符格式可以自己*定义)
1.2总结:时间戳是计算机能够识别的时间,格式化的时间字符串是人能够识别的时间,结构化时间是用来操作时间的。
2、三种时间表达形式上的相互转换(如图)
1.1 字符串时间和时间戳之间是不能相互转换的。
1.2 time.localtime结构化时间的对象是北京标准时间,而time.gmtime结构化时间的对象是国际标准时间
五、random模块详解
1、python中的random模块用于随机产生一个任意数字
2、random.random
random.random()用于随机生成一个0到1.0的浮点数。
3、random.randint
random.randint(x,y)用于随机生成一个整数,大于等于x小于等于y的整数,并且x必须大于y.(顾头又顾尾)
4、random.randrange
random.randrange(x,y)用于随机生成一个整数,大于等于x小于y的整数,并且x必须大于y.(顾头不顾尾)
5、random.choice
random.choice(序列x)是从序列中随机获取一个元素,返回的结果是个整数型。序列x表示的是个有序序列。
random.choices(序列y)是从序列中随机获取一个元素,返回的结果是个list型。序列y表示的是个有序序列。
6、random.sample
random.sample(sequence, k)从指定序列中随机获取k个元素,返回的结果是列表。sample函数不会修改原有序列sequence,。
7、random.uniform
random.uniform(x,y)用于随机生成一个大于x小于y的浮点数,且x可以大于y也可小于y。
8、random.shuffle
random.shuffle(x)用于将一个列表的元素打乱,改变了列表x的元素位置。
六、hashlib
1、hashlib的作用:hashlib是个专门提供hash算法的库(摘要算法),现在里面包括md5, sha1, sha224, sha256, sha384, sha512。
2、摘要算法:摘要算法又称哈希算法,散列算法。他通过一个函数吧任意长度的数据转化成(对应)一个固定长度的数据串(通常用16进制的字符串表示)
3、hashlib的执行方式
hashlib.md5().update(b'x') 其中x为加密对象,加密完成。(如果加密对象很大可以调用多次update,加密后的结果是一样的)
hashlib.md5().hexdigest()
查看加密后的结果(32位的16进制字符串)
4、md5的加盐操作
4.1 为何加盐:由于加密对象和计算出的md5值是一一对应的关系,通过撞库的方式就可以破解用户密码,所以要对加密对象进行加盐操 作。
4.2 加盐方法:对原始字符串前加入一串数据,然后进行MD5加密
其格式为:hashlib.md5('salt',encod(utf-8))
5、如果两个用户的加密对象相同,加盐一致,得到的MD5值也是一样的,解决办法是通通过把登录名作为Salt的一部分来计算MD5,从而实 现相同口令的用户也存储不同的MD5。(前提是用户名不一致)
注:SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法越 慢,而且摘要长度更长.摘要算法在很多地方都有广泛的应用。要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只 能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。
七、os模块详解
1、os 模块提供了一个统一的操作系统接口函数, 这些接口函数通常是平台指定的,os 模块能在不同操作系统平台如 nt 或 posix中的特定函数间自动切换,从而能实现跨平台操作。(OS模块是Python标准库中的一个用于访问操作系统功能的模块)
2、os模块的详细参数
1.os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
2.os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: ('.')
3.os.pardir 获取当前目录的父目录字符串名:('..')
4.os.makedirs('dirname1/dirname2') 可生成多层递归目录
5.os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
6.os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
7.os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
8.os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印出来,不区分文件和文件夹。
9.os.remove(x) 删除一个文件其中x指的是文件的绝对路径
10.os.name 判断当前使用的是什么平台。win->'nt'; Linux->'posix'
11.os.system("bash command") 运行shell命令,直接显示
12.os.environ 获取系统环境变量
13.os.path.abspath(path) 返回path规范化的绝对路径
14.os.path.split(path) 将path分割成目录和文件名二元组返回
15.os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
16.os.rename("oldname","newname") 重命名文件/目录
17.os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
18.os.path.isdir(path) 如果path是一个存在的目录,则返回True,否则返回False
19.os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
20.os.path.getatime(path) 返回最近一次进入path的时间.a即access,跟linux里边的atime是一样的
21.os.path.getmtime(path) 返回这个path最后一次修改的时间。
22.os.path.getctime(path) 返回path所指向的文件或者目录创建时间
23.os.path.getsize(path) 返回path的大小