time库包含三类时间函数
1. 时间获取 : time.time() , time.ctime(), time.localtime() , time.gmtime()
2. 时间格式化 : time.strftime() ,time.strptime() 互补关系
3. 程序计时 : time.sleep(),time.per_counter()
时间获取
time.time() 获取的是浮点数 ,以秒为单位,从1970年到现在累计的总秒数
time.ctime() 获取的是字符串 ,程序员能够理解的格式
time.localtime() 获取struct_time 格式 的中国时间
time.gmtime() 获取的是格林威治时间,生成计算机可以处理的时间格式,这种格式我们叫它 struct_time 格式
输出结果如下:
补充:time.localtime()输出的也是struct_time格式,与time.gmtime()类似
区别在于 它们的tm_hour 不同 ,一个是格林威治时间,一个是当地时间(中国) ,
GMT是格林威治标准时间的英文缩写,是国际标准时间
local.time 是当地时间,中国在东八区,比国际标准时间早8小时,即GMT+8
时间格式化
strftime (tpl,ts) 将struct_time 格式时间转换为方便读取的时间
带有两个参数 tpl:展示模板,定义要输出的效果 ts:计算机内部时间类型变量
举个例子:
t = time.localtime()
time.strftime("%Y-%m-%d %H:%M:%S",t)
输出结果为:2021-04-10 10:48:37
strptime() 将一段时间字符串转换为struct_time 格式
举个例子:
timestr = "2021-04-10 10:48:37"
time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
输出结果为:time.struct_time(tm_year=2021, tm_mon=4, tm_mday=10, tm_hour=10, tm_min=48, tm_sec=37, tm_wday=5, tm_yday=100, tm_isdst=-1)
记忆法:
strftime: str format time
strptime: str parser time
程序计时
测量的是起止动作所经历时间的过程 简单来说 就是一段程序从开始运行到结束 它经历了多少时间。包括
测量时间: perf_counter() : 返回一个CPU级别的精确时间计数值,单位秒 ,它不是从零开始计算的,所以一次调用没有意义 需要连续调用 计算差值才能体现价值
产生时间: time.sleep(3) : 让程序休眠3秒 可以是浮点数
Random常用的两个函数
Python中的随机数使用随机数种子产生
随机数种子: 随机数种子确定了随机序列的产生。只要种子相同,产生的随机序列,无论是每一个数,还是树之间的关系都是确定的
random.seed() # 初始化给定的随机数种子,默认为当前系统时间
random.random() # 产生0~1之间的小数
random.randint(a,b) # 生成a ,b 之间的随机整数
random.uniform(10,100)# 生成a,b之间的随机小数
random.choice(seq) # 从序列seq中随机选中一个元素random.choice([0,1,2,3,4,5,6,7,8])
random.shuffle(seq) # 返回打乱后的序列
为什么要给种子?
如果你编程中给出了随机种子,那么下一次程序再次运行,只要种子相同,那么产生的随机数也是相同的。对于使用随机数的程序,我们可以复现或者再现你程序运行的过程。
如果不使用随机数种子,那么它使用的是当前系统时间,而那个时间是精确到微秒的,这个时间是我们很难再现的,所以后面产生的程序运行的结果,就是完全随机,是我们认为不可再现的。
所以看我们的程序需求,如果我们需要再现随机过程,那么我们就设定种子,如果说只是用随机数,不关心程序别人复现的结果 ,那我就可以不设定种子。