python之模块 一、模块的介绍 (1)python模块,是一个python文件,以一个.py文件,包含了python对象定义和pyhton语句 (2)python对象定义和python语句 (3)模块让你能够有逻辑地组织你的python代码段。 (4)把相关的代码分配到一个模块里能让你的代码更好用,更易懂 (5)模块能定义函数,类和变量,模块里也能包含可执行的代码
二、模块的导入 注意点: (1)一个模块只要导入一次,不管你执行多少次import,一次就可以 (2)模块不调用时是置灰状态
1、 格式:import 模块名 使用:模块名.函数名 案例: import time print(1) time.sleep(5) #休眠 print(2)
2、from 包名.模块名 import * (*表示所有的函数) from bao.aa import * 案例: aa模块 def gs(): print(1) def gs1(): print(2) def gs2(): print(3)
bb模块: from bao.aa import * gs() gs1() gs2() 3、from 包名.模块名 import 函数名 (*表示所有的函数) 案例: aa文件: def gs(): print(1) def gs1(): print(2) def gs2(): print(3)
bb文件: from bao.aa import gs gs()
4、 通过取别名来调用函数 格式:from 模块名 import 函数名 as 别名
案例: aa模板 def gs(): print(1) def gs1(): print(2) def gs2(): print(3)bb模块:
from bao.aa import gs as b b()
============================================= 模块讲解:
一、time模块 import time #1970年到现在经过的秒数 print(time.time()) #1651200498.799537 print(time.ctime()) #固定格式的当前时间 print(time.sleep(3)) # 休眠,也是强制等待 print(time.asctime()) #转化为asc码显示当前时间 print(time.strftime(“%H-%M-%S %y-%m-%d”))
============================================== 二、random模块 生成随机浮点数,帧数,字符串,甚至帮助你随机选择列表中的一个元素,打乱一组数据等; from random import * print(random()) #生成0-1之间的浮点数,但是能取到0,不能取到1 print(randint(1,100)) #生成指定范围内整数,包括开始值和结束值 print(randrange(1,100,2)) # 生成指定范围内的奇数 print(randrange(0,100,2)) #生成指定范围内的偶数 f=[1,2,3,6,7,2] print(sample(f,3)) #生成从一个固定集合中选n个数随机 print(choice(f)) #随机生成一个字符 shuffle(f) print(list(f))
============================================== string 模块 print(string.digits) #0123456789 所有的数据 print(string.hexdigits) #0123456789abcdefABCDEF print(string.ascii_uppercase) #ABCDEFGHIJKLMNOPQRSTUVWXYZ #所有的小写 print(string.ascii_lowercase) #abcdefghijklmnopqrstuvwxyz #所有小写
============================================== 作业: 案例1:使用random模块随机生成手机号码、自己定义手机号码开头的前三位 方法1: sz=string.digits sj=[‘159’] for i in range(8): s=choice(sz) sj.append(s) print(‘’.join(sj))
方法2: from random import * import string sz=string.digits a=sample(sz,8) b=(‘’.join(a)) sj=input(‘前三位:’) print(sj+b)
方法3: from random import * import string sz=string.digits a=sample(sz,8) b=(‘’.join(a)) sz=‘159’ print(sz+b)
方法4: from random import * import string sz=string.digits a=sample(sz,8) sz=[1,5,9] sz.extend(a) for i in sz: print(i,end=‘’)
==============================================
2、用random模块随机生成6位数验证码
方法1: from random import * a=[] for i in range(6): b=str(randint(0,9)) a.append(b) print(‘’.join(a))
方法2: from random import * import string d=string.digits+string.ascii_uppercase+string.ascii_lowercase print(d) for i in range(6) : s=choice(d) print(s, end=‘’) 方法3: import random import string yzm=string.digits+string.ascii_uppercase+string.ascii_lowercase
print(yzm)
a=random.sample(yzm,6) print(‘’.join(a))
方法4: a=[] for i in range(6): rand_num=random.randint(0,9) a.append(str(rand_num)) print(‘’.join(a)) 方法5: import random import string print(‘’.join(random.sample(string.digits+string.ascii_lowercase,6)))
方法6: from random import * import string def kk(): a=string.digits+string.ascii_uppercase+string.ascii_lowercase k=[] for i in range(6): k.append(choice(a)) s=‘’.join(k) return s code=kk() print(code) def hh(): login=input(str(‘请输入上方验证码登录:’)) if login==code: print(‘登录成功’) else: print(‘登录失败’) hh()
=========================================== 加密模块: import hashlib
base64 MD5
一、加密算法 md5、rsa、AES ,DES.BASE DES 以64位为分组队数据加密,加密和解密是同一算法‘; rsa加密 算法:是一种非对称加密算法(在公开秘钥加密和电子商业中rsa被广泛使用) AES rijndael 加密法对称加密中最流行的算法之一(AES为分组密码)
===================================
案例:
#base64加密 import base64 a=base64.b64encode(b"123456") print(a) #b’MTIzNDU2’ #base64解密 b=base64.b64decode(b"MTIzNDU2") print(b) #b’123456’ 备注:base64 编码包含ascll是包含字符,二是二进制数据
=================================== MD5加密
(1)md5 是一种算法,可以将一个字符串或文件,md5后,就可以生成一个固定为128bit的串,这个串,基本上唯一; (2)python2中有md5 (3)python将MD5 归纳到hash 模块,译作:‘散列’,直译为‘哈希’。 (4)md5 可以把任意长度的输入,通过种hash算法,变换成固定长度的输出,该输出就是散列值,也称摘要值,,改算法就是哈希函数,也称摘要函数。(5)md5 是最常见的摘要算法,速度快,生成结果是固定16字节,通常用32位的16进制字符串表示。 (5)hash模块中包含MD5、sha1 ,sha256 ,sha512,等 (6)摘要;hash.digest() 返回摘要,作为二进制数据字符串值; hash.hexdigeest 返回摘要,作为16进制数据字符串值 (7)案例1: import hashlib m=hashlib.md5() # 创建MD5对象 m.update(b"123456") print(m.hexdigest()) #e10adc3949ba59abbe56e057f20f883e
十六直径转换输出
备注: 1、python中md5要加上b,python2不需要 2、md5 不能范姐,但是加密是固定,关系是一一对应,可以被对撞。
案例1 import hashlib m=hashlib.sha384() m.update(b’123456’) print(m.hexdigest())
案例2 import hashlib m=hashlib.sha256() m.update(b’123456’) print(m.hexdigest()) 案例: import hashlib m=hashlib.sha512() m.update(b’123456’) print(m.hexdigest())
-================================== 面试题: (1)如果在工作中有很多数据,如果数据被改动,或传递别修改,看不出? a、通过加密检查数据 通过加密对数据进行加密处理,生成加密字符,如果有改动,字符就不相同 b、比对数据不一样,如果加密的字符不相同,说明两个数据不一致
================================= 作业: 通过md5加密算法把随机生成的6位数验证码进行加密返回16进制的字符串
=================================== os模块:
os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适 应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编 程时,经常和文件、目录打交道,所以离不了os模块。 os模块中常见的方法: os.getcwd()获取当前执行命令所在目录 os.path.isfile()判断是否文件 os.path.isdir() #判断是否是目录 os.path.exists() #判断文件或目录是否存在 os.listdir(dirname) #列出指定目录下的目录或文件 os.path.split(name) #分割文件名与目录 os.path.join(path,name) #连接目录与文件名或目录 os.mkdir(dir) #创建一个目录 os.rename(old,new) #更改目录名称 os.remove() 删除文件
=========================== 固定格式: 场景一:获取当前操作对象中的的的一个项目的绝对路径固定语法 import os #获取项目路径 p=os.path.abspath(os.path.dirname(os.getcwd())) print§
#获取当前文件的绝对路径,直接通过spliit对目录和文件进行分割 file_path=os.path.split(os.path.realpath(file)) print(file_path) #(‘C:\Users\Administrator\PycharmProjects\gs1\bao’, ‘python006.py’) #获取当前文件的绝对路径,直接通过spliit对目录 file_path=os.path.split(os.path.realpath(file))[0] print(file_path) #获取当前文件的绝对路径,直接通过spliit对目录 file_path1=os.path.split(os.path.realpath(file))[1] print(file_path1)
#获取项目的绝对路径 v=os.path.dirname(os.path.dirname(file)) print(v)
#项目路径和包进行拼接 hz_path=os.path.join(v,‘ss.txt’) print(hz_path) #C:/Users/Administrator/PycharmProjects/gs1\ss.txt
|