python的datetime和random以及hashlib模块

230 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天

datetime模块

其实该模块就是对time模块做补充

  • datetime模块为日期和时间处理同时提供了简单和复杂的方法

datetime模块:

  • time:时间

  • date:日期 (data 数据)

  • datetime:日期时间

  • timedelta:时间差

  • datetime.tzinfo:与时区有关的相关信息

import datetime
print(datetime.date.today())
>>> 2022-4-28
#date类表示一个日期。日期由年、月、日组成

datetime.date(year, month, day):

  • day根据year和month来决定
  • moth是1-12月
  • year是1-9999年

date类的一些方法(常用):

  • date.today():返回一个表示当前本地日期的date对象
  • date.max、date.min:date对象所能表示的最大、最小日期
import datetime 
timedel = datetime.timedelta(hour = 2)
now = datetime.datetime.now()
result = now + timedel
print(result)

timedelta**[微秒 - 年,没有月]**这里支持时间的运算

  • 应用场景:

缓存:数据库redis 作为缓存 redis.set(key,value,时间差) session 内存的缓存

random模块

简单的可以把该模块理解为随机模块

ran = random.random()
print(ran)
ran = random.randrange(1,10,2)
print(ran)
ran = random.randint(1,10)
print(ran)
list = ['mzmm403','小明','小美','小帅']
ran = random.choice(list)
print(ran)
pai = ['大王','小王','黑桃A','梅花K']
random.shuffle(pai)
print(pai)
  • .random():从0-1随机生成一个浮点数

  • .randrange(start,end,step):从start到end随机生成一个步长为step的整数,其中范围是左闭右开,step默认值为1,默认整数

  • .randint(start,end):从sart到end随机生成一个整数,且左右都闭

  • .choice:在后面传入的值中随机抽取一个

  • .shuffle:就是将传入的值进行洗牌打乱

hashlib模块

提供一些加密的算法

这里列举三个常用的加密算法:md5,sha1,sha256

import hashlib
#加入你的女友给你发一段文字你想加密
msg = '中午一起去吃饭吧'
#这里加密不支持中文所以我们得先编码
md5 = hashlib.md5(mgs.encode('utf-8'))
print(md5.hexdigest())
sha1 = hashlib.sha1(mgs.encode('utf-8'))
print(sha1.hexdigest())
sha256 = hashlib.sha256(mgs.encode('utf-8'))
print(sha256.hexdigest())
  • 以上三种加密都是单向加密(ps:除非你会加密算法的底层,否则你也解不出来)
  • md5加密后的长度是32,sha1是40,sha256是64
  • 输出加密结果时都必须调用hexdigest

应用场景:用户密码加密,一般在数据库记录的是用户加密后的密码,而如何实现有效登录是将用户输入的密码加密后和数据库的比对