python之模块
一、模块的介绍:
1、模块的定义(一个py文件就是一个模块)
Python 模块(Module),是一个Python文件,以.py 结尾,包含了
Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的Python代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
二、模块的导入
第一种':
import 模块名称
模块名称.函数
案例:
import time
print(" 请进")
time.sleep(5)
print("我开门了")
- 1.
- 2.
- 3.
- 4.
- 5.
第二种:
from 模块 名称 import * (所有)
函数
from time import * * 号表示 所有函数
print(" 请进")
sleep(5)
print("我开门了")
- 1.
- 2.
- 3.
- 4.
第三种:
from 模块 名称 import sleep(所有)
from time import sleep
print(" 请进")
sleep(5)
print("我开门了")
- 1.
- 2.
- 3.
- 4.
第四种:
from 模块名称 import 函数 as 别名
别名()
print(" 请进")
s(5)
print("我开门了")
- 1.
- 2.
- 3.
- 4.
- 5.
第五种:导入其他模块
ss 模块
cc模块
cc文件:
from hz_bao import ss
ss.a()
ss.b()
ss.c()
- 1.
- 2.
- 3.
- 4.
ss文件:
def a():
print("杭州多测师")
def b():
print("深圳多测师")
def c():
print("上海多测师")
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
==============================
Python中常见的模块:
time模块
random模块
hashlib模块
os模块
re模块
string模块(拓展)
xlrd模块
json模块(拓展)
sys模块 (拓展)
==================================
python中time模块
time模块中常见的方法:
time() #1970到现在的经过的秒数
案例:
方法一:
import time
print(time.time()) 结果:1630911559.4688041
- 1.
- 2.
- 3.
方法二:
from time import *
print(time()) #结果:1630911628.3837867
- 1.
- 2.
- 3.
ctime() #固定格式的当前时间
案例1
from time import *
print(ctime()) #结果:Mon Sep 6 15:01:12 2021
- 1.
- 2.
- 3.
sleep(3) #休眠 单位是秒
案例:
from time import *
print(" 请进")
sleep(5)
print("我开门了")
- 1.
- 2.
- 3.
- 4.
asctime() #转换为asc码显示当前时间
from time import *
print(asctime())
结果:Mon Sep 6 15:03:18 2021
- 1.
- 2.
- 3.
strftime() #时间格式化 (重点)
from time import *
print(strftime("%H-%M-%S--%y-%m-%d"))
- 1.
- 2.
==================================
python中random模块
生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等
random模块中常见的方法:
random.random() #该方法是生成0-1之间的浮点数,但是能取到0,但是取不到1
案例:
from random import *
print(random()) #结果0.6552172580859921
- 1.
- 2.
random.randint(x,y) #该方法生成指定范围内整数,包括开始和结束值random.randrange(x,y,step) #生成指定范围内的奇数,不包括结束值
备注:在radint 包含开始值和结束值,随机选取一位数
from random import *
print(randint(1,10)) #结果1-10
- 1.
- 2.
- 3.
random.randrange(x,y,step) #生成指定范围内的偶数,不包括结束值
案例1·:
print(randrange(1,101)) 随机生成1-100之间的一位数
- 1.
- 2.
案例2:
from random import *
print(randrange(1,101,2)) 随机生成1-100之间的奇数的一位数
- 1.
- 2.
- 3.
案例3:
from random import *
print(randrange(0,101,2))
- 1.
- 2.
- 3.
random.sample(seq,n) #从序列seq中选择n个随机且独立的元素
案例:
from random import *
a=[1,2,3,4,5,6,7,8,9,10]
print(sample(a,3))
- 1.
- 2.
- 3.
random.choice(test) #生成随机字符
案例
from random import *
a=[1,2,3,4,5,6,7,8,9,10]
print(choice(a))
- 1.
- 2.
- 3.
- 4.
random.shuffle(list) #洗牌(随机数列)
案例:
from random import *
a=[1,2,3,4,7,6,7,8,9,10]
shuffle(a)
print(a)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
==================================
string 模块
import string
print(string.digits) #0123456789 生成0-9 数字
print(string.hexdigits) #0123456789abcdefABCDEF #0-1,a-f大小写
print(string.ascii_uppercase) #ABCDEFGHIJKLMNOPQRSTUVWXYZ #生成26个大写字母
print(string.ascii_lowercase) #abcdefghijklmnopqrstuvwxyz #生成26个小写字母
- 1.
- 2.
- 3.
- 4.
- 5.
第一题:
方法一:
a=[0,1,2,3,4,5,6,7,8,9]
b=[183]#自定义前三位
c=sample(a,8)#随机生成后八位
for i in (b+c):
print(i,end='')
- 1.
- 2.
- 3.
- 4.
- 5.
方法二:(后面八位不重复,都是洗牌中的内容)
from random import *
a=[1,2,3,4,5,6,7,8,9]
b=[1,3,6]
shuffle(a)
b.extend(a)
print(b[0:11])
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
方法三:(缺少159-0000-1234)
import random
r = random.randint(10000000, 99999999)
phone = '155' + str(r)
print(phone)
- 1.
- 2.
- 3.
- 4.
方法四:
a=[0,1,2,3,4,5,6,7,8,9]
b=[1,3,7]
print(type(len(b)))
while len(b) != 11:
b.append(random.choice(a))
print(b)
方法五:
from random import *
b=[1,7,6]
i=1
while i<=8:
b.append(randint(0,9))
i = i + 1
c = map(str, b)
print("".join(c))
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
方法六:
import random
def phone():
s=random.choice([3,4,5,7,8,9])
t={
3:random.randint(0,9),
4:random.choice([5,7,9]),
5:random.choice([0,1,2,3,4,5,7,8]),
7:random.choice([2,3,5,6,7,8]),
8:random.randint(0,9),
9:random.choice([1,3,8,9]),
}[s]
suffix=random.randint(9999999,100000000)
return "1{}{}{}".format(s,t,suffix)
for i in range(100):
randomphone=phone()
print(randomphone)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
第二题:
方法一:
from random import *
a=[0,1,2,3,4,5,6,7,8,9]
c=[]
while len(c)!=6:
c.append(choice(a))
print(c)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
方法二:(不足之处 001000)
import random
ran = random.randint(100000, 999999)
# ran = random.randrange(100000, 1000000)
print(ran)
- 1.
- 2.
- 3.
- 4.
方法三:(备注无重复)
from random import *
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c = sample(a, 6) # 随机生成6为数验证码
for i in (c):
print(i, end='')
- 1.
- 2.
- 3.
- 4.
- 5.
方法四:
import random
import string
num=string.ascii_lowercase+string.ascii_uppercase+string.digits
a=random.sample(num,6)
print("".join(a))
- 1.
- 2.
- 3.
- 4.
- 5.
方法五:
import random
import string
c=[]
num=string.ascii_lowercase+string.ascii_uppercase+string.digits
for i in range(6):
a=random.choice(num)
c.append(a)
print("".join(c))
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
==================================
加密算法:
加密算法:
MD5 ,RSA,AES,DES,BASE
DES以64位为分组对数据加密,加密和解密用的是同一个算法.
RSA加密算法是一种非对称加密算法(在公开密钥加密和电子商业中RSA被广泛使用)
AES Rijndael加密法对称密钥加密中最流行的算法之一 (AES为分组密码)。
DES 算法为密码体制中的对称密码体制,(DES以64位为分组对数据加密,加密和解密用的是同一个算法.)
base64 编码
Base64编码
Base64编码是一种用64个字符来表示任意二进制数据的方法
base64是python内置的模块可以直接进行base64的编码和解码
案例1:
#base64 加密
import base64
a=base64.b64encode(b"123456")
print(a) # b'MTIzNDU2'
#base64 解密
c=base64.b64decode(b'MTIzNDU2')
print(c)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
MD5 加密
DM5加密
MD5 定义:md5,是一种算法.可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度为128bit的字符串,这个串,基本上是唯一的
由因为MD5模块在python3中被移除,在python3中使用hashlib模块进行md5操作
Hash,译做“散列”,也有直接音译为“哈希”的。把任意长度的输入,通过某种hash算法,变换成固定长度的输出,该输出就是散列值,也称摘要值。该算法就是哈希函数,也称摘要函数。
MD5是最常见的摘要算法,速度很快,生成结果是固定的16字节,通常用一个32位的16进制字符串表示。
SHA1算法更安全点,它的结果是20字节长度,通常用一个40位的16进制字符串表示。
而比SHA1更安全的算法是SHA256和SHA512等等,不过越安全的算法越慢,并且摘要长度更长。
在线加解密:
http://encode.chahuo.com/
https://tool.oschina.net/encrypt?type=2
案例:
import hashlib
m=hashlib.md5() #创建一个对象:m
m.update(b"123456") #通过m对象来调用update 方法对某个值进行加密处理
print(m.hexdigest()) #通过hexdigest 将MD5机密进行16进制的转换
#结果:e10adc3949ba59abbe56e057f20f883e
备注:MD5 不能反接,但是加密是固定,管子是意义对应,所以有缺陷,可以被对撞出来。
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
sha256:
import hashlib
s=hashlib.new('sha256',b'123456')
print(s.hexdigest())
结果:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
- 1.
- 2.
- 3.
- 4.
sha512:
import hashlib
s=hashlib.new('sha512',b'123456')
print(s.hexdigest())
- 1.
- 2.
- 3.
ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413
面试题:
如当前有两个数都是几十万,上百万条数据,如何鉴别两数据是完成一样的。通过加密发方式来处理,加密以后的编码都是一致,说明数据一样,如果加密编码不一致,则说明数据有问题。
面试题: 通过md5加密算法把随机生成的6位数验证码进行加密返回16进制的字符串?