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.

 

python之模块_模块

第一题:

方法一:

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.

python之模块_模块_02

 

第二题:

方法一:

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.

 

==================================

加密算法:

python之模块_模块_03

 

加密算法:
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

python之模块_模块_04

 

案例:
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进制的字符串?