当前位置: 首页 > news >正文

Python个人学习笔记(15):模块(time,datetime,random)

本章主要内容:
1.time模块(sleep
2.datetime模块
3.random模块
4.序列化-pickle模块
5.序列化-json模块
6. hashilib模块
7. shutil模块
8. logging模块
9.异常处理
10. traceback
11.zipfile模块
12.正则表达式
13.re模块
14.os模块
15.sys模块
16.模块和包
17.第三方模块安装和使用

一、time

(一)模块介绍

模块其实就是我们把公用的功能代码写入在一个py文件中,在其他模块中可以随意的使用该文件中的代码。
导入一个模块的语法
1.import 模块
2.from 模块 import 功能

import time # 导入一个模块整体
from time import sleep # 从一个模块中导入一个具体的功能

用哪个都行

(二)time

1. sleep

我们一般会使用time模块让程序休息n秒,或者计算简单的时间差。

import time
print("你好")
time.sleep(3) # 暂停三秒
print("你才好呢")

爬虫中会用到,用于降低程序执行的频率
爬虫程序模拟:

while True:
    print("抓取百度的信息")
    time.sleep(1)

2. time.time():时间戳

选取一个时间点作为零点,从零点开始的秒数作为时间,即数字类型的时间。

代码:

print(time.time())

结果:

1741767846.205992
# 距离零点1741767846.205992秒

可以用于计算时间差
代码:

start = time.time()
for i in range(10000):
    print(i)
end = time.time()
print(end - start)

结果:

0.027585983276367188
# 这个程序花了0.027585983276367188秒

二、datetime(重要)

常用于处理时间

(一)datetime.now:得到系统时间

得到系统时间
代码:

from datetime import datetime
print(datetime.now())

结果:

2025-03-12 16:41:47.828275

也可以打出指定时间
代码:

print(datetime(2018,1,2,12,12,13))

结果:

2018-01-02 12:12:13

(二)计算时间差

代码:

t1 = datetime(2018,1,2,12,30,00)
t2 = datetime(2018,1,4,14,30,00)
diff = t2 - t1
print(diff)

结果:

2 days, 2:00:00
# 两天两小时

还能得到一共差了多少秒
代码:

print(diff.total_seconds())

结果:

180000.0

(三)t.strftime、t.strptime:时间的格式化

t.strftime(格式化形式)
代码:

t = datetime.now()
print(t)
print(t.strftime("%Y年%m月%d日%H小时%M分钟%S秒")) # 把时间格式化成一个字符串

结果:

2025-03-12 16:54:27.546551
2025031216小时54分钟27

不用记,需要用再查

例:让用户输入两个时间,计算时间差
代码:

s1 = input("请输入第一个时间(yyyy-mm-dd hh:mm:ss):")
s2 = input("请输入第二个时间(yyyy-mm-dd hh:mm:ss):")
# 把字符串转化为时间
t1 = datetime.strptime(s1, "%Y-%m-%d %H:%M:%S") # p:parse
t2 = datetime.strptime(s2, "%Y-%m-%d %H:%M:%S") # 格式部分注意中英文符号的区别
print(t2-t1)

结果:

请输入第一个时间(yyyy-mm-dd hh:mm:ss):2025-01-23 12:13:24
请输入第二个时间(yyyy-mm-dd hh:mm:ss):2025-02-04 12:12:12
11 days, 23:58:48

datetime:年月日 时分秒
date:年月日(新版没有这个模块)
time:时分秒

必须要掌握的内容:
1. now():系统时间
2. datetime(year, month, day, hour, min, second)
3. strftime(“%Y-%m-%d %H:%M:%S”):时间格式化成字符串
4. strptime(str, “%Y-%m-%d %H:%M:%S”):把字符串转化成时间

三、random

random.random:生成(0,1)内的随机小数
代码:

import random
print(random.random())
print(random.random())
print(random.random())

结果:

0.6940466062205409
0.6733916751508989
0.7445562466157682

random.uniform:生成一个开区间范围的随机小数

代码:

print(random.uniform(5,9))

结果:

7.821629111940486

可以用于发红包
random.randint:生成一个闭区间范围的随机整数
代码:

print(random.randint(3,8))

结果:

3

random.choice:从列表中随机选择一个

lst = ["张无忌",'周杰伦','潘玮柏','赵四']
print(random.choice(lst))

random.sample:从列表中随机选择一部分(用得不如randint多)

lst = ["屠龙刀",'倚天剑','500金币','青龙偃月刀','溜溜球']
# 每次随机爆出两件装备
print(random.sample(lst,2))

练习:随机生成四位验证码
四位验证码,一个一个的生成,可能会有数字、大小写字母
代码:

def rand_num():
    return str(random.randint(0, 9))

def rand_upper():
    return chr(random.randint(65, 90)) # chr可以让一个数字变成字母

def rand_lower():
    return chr(random.randint(97, 122)) # 数字是既定的ascii码排列

def rand_verify_code(n=4): # n默认为4,循环四次
    lst = [] # 准备一个接收下面循环出来的值的列表
    for i in range(n):
        which = random.randint(1, 3) # 上述三种类型中随机出一个
        if which == 1: # 随机数字
            s = rand_num()
        elif which == 2: # 随机一个大写字母
            s = rand_upper()
        elif which == 3:
            s = rand_lower()
        lst.append(s)
    return ''.join(lst)

print(rand_verify_code())

相关文章:

  • ubuntu中使用ollama部署本地deepseek
  • 在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢
  • SpringMVC(五)拦截器
  • 深度学习中LayerNorm与RMSNorm对比
  • Web安全:保护您的网站免受网络威胁
  • 2024下半年真题 系统架构设计师 案例分析
  • 将景区天气数据存储到Excel文件中
  • 【微服务】Nacos 配置动态刷新(简易版)(附配置)
  • 基于express+TS+mysql+sequelize的后端开发环境搭建
  • 深入理解 Python 中的 Socket 编程
  • GitHub:添加ssh密钥
  • 【文献阅读】DeepRAG:大语言模型的检索增强推理新范式
  • 【Springboot知识】开发属于自己的中间件健康监测HealthIndicate
  • Obsidian中Text Generate接入智谱清言报错:JSON parse error
  • 计算机视觉|一文读懂NeRF:为3D场景重建带来新突破
  • 系统架构设计师—论文解析—论文写作技巧
  • PowerBI实用技巧——案例十三 (根据所选日期,动态计算每年新客户数量)
  • uniapp-x 之useAttrs只读
  • Excel单元格中插入自定义超链接
  • ffmpeg面试题整理
  • 中国结算澄清“严查场外配资”传闻:账户核查为多年惯例,无特殊安排
  • 美国与卡塔尔签署超2435亿美元经济及军事合作协议
  • 诠释微末处的丰盈:“上海制造佳品汇”首届海外专场即将亮相日本大阪
  • 3年多来俄乌要首次直接对话?能谈得拢吗?
  • 奥迪车加油时频繁“跳枪”维修两年未解决,4S店拒退换:可延长质保
  • 前四个月社会融资规模增量累计为16.34万亿元,比上年同期多3.61万亿元