python 常用的内置模块
一、标准库概述
- 在安装Python解释器时自动安装的模块称为系统内置模块(也称为标准模块或标准库)。
| 标准库名称 | 主要功能描述 |
|---|---|
os |
操作系统和文件相关操作 |
re |
正则表达式字符串操作 |
random |
随机数生成 |
json |
高维数据编码/解码 |
time |
时间处理相关功能 |
datetime |
日期时间处理和计算 |
二、random模块详解
- Python中用于生成随机数的标准库
核心函数
| 函数 | 描述 | 示例 |
|---|---|---|
seed(x=None) |
初始化随机种子(默认系统时间) | random.seed(10) |
random() |
生成[0.0, 1.0)的随机浮点数 | random.random() |
randint(a, b) |
生成[a, b]范围内的随机整数 | random.randint(1, 10) |
randrange(m, n[, k]) |
生成[m, n)步长为k的随机整数 | random.randrange(1,10,3) |
uniform(a, b) |
生成[a, b]范围内的随机浮点数 | random.uniform(1,100) |
choice(seq) |
从序列中随机选择元素 | random.choice(lst) |
shuffle(seq) |
随机打乱序列(原地修改) | random.shuffle(lst) |
代码示例
import random
# 设置随机数种子 随机数种子相同输出的随机数也相同
random.seed(10)
# 产生一个[0.0,1.0)之间的随机小数
print(random.random())
# 生成一个[a,b]之间的整数
print(random.randint(1,10))
print('-'*40)
random.seed(10)
print(random.random())
print(random.randint(1,10))
# 生成一个[m,n)之间步长为k的随机整数
for i in range(10): # #[m,n)步长为k m-->start-->1,n->stop->10,k->step-->3
print(random.randrange(1,10,3))
# 生成一个[a,b]之间的随机小数
print(random.uniform(1,100))
lst = [i for i in range(1,10)]
# 从序列中随机选择一个元素
print(random.choices(lst)) # [6]
# 将序列seq中元素随机排列,返回打乱后的序列
random.shuffle(lst)
print(lst) # [1, 2, 3, 4, 9, 8, 7, 6, 5]
三、time模块详解
- 处理时间的标准库,支持时间戳转换、格式化和计时
核心函数
| 函数 | 描述 |
|---|---|
time() |
获取当前时间戳(浮点数秒数) |
localtime([secs]) |
将时间戳转换为本地时间的struct_time对象 |
ctime([secs]) |
返回易读的时间字符串 |
strftime(format[, t]) |
格式化时间为字符串 |
strptime(string, format) |
解析字符串为struct_time对象 |
sleep(secs) |
暂停当前线程执行 |
时间格式化符号
| 符号 | 含义 | 范围 |
|---|---|---|
%Y |
四位年份 | 0001-9999 |
%m |
月份(数字) | 01-12 |
%B |
月份全称 | January-December |
%d |
日期 | 01-31 |
%A |
星期全称 | Monday-Sunday |
%H |
24小时制小时 | 00-23 |
%M |
分钟 | 00-59 |
%S |
秒 | 00-59 |
代码示例
import time
# 获取当前时间戳
now = time.time()
print(now) # 1744296159.2899847
# 获取指定时间戳对应的本地时间的struct time对象
obj = time.localtime() # struct_time对象
print(obj) # time.struct_time(tm_year=2025, tm_mon=4, tm_mday=10, tm_hour=22, tm_min=43, tm_sec=16, tm_wday=3, tm_yday=100, tm_isdst=0)
obj2 = time.localtime(1744296159.2899847)
print(type(obj2),obj2) # <class 'time.struct_time'> time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=1, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
print('年份:',obj2.tm_year) # 年份:2025
print('月份:',obj2.tm_mon) # 月份:4
print('日期:',obj2.tm_mday) # 日期:10
print('时:',obj2.tm_hour) # 时:22
print('分:',obj2.tm_min) # 分:42
print('秒:',obj2.tm_sec) # 秒:39
print('星期:',obj2.tm_wday) # 星期: 3
print('今年的第几天:',obj2.tm_yday) # 今年的第几天:100
# 获取当前时间戳对应的易读字符串
print(time.ctime()) # Thu Apr 10 22:52:28 2025
# 格式化时间,结果为字符串 str --> 字符串 f->format格式 time时间
print(time.strftime('%Y-%m-%d %H:%M:%S %A',time.localtime())) # 2025-04-10 22:58:12 Thursday
print(time.strftime('%B',time.localtime())) # April
# 提取字符串的时间,结果为struct time对象
print(time.strptime('2025-04-11','%Y-%m-%d'))
# ime.struct_time(tm_year=2025, tm_mon=4, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=101, tm_isdst=-1)
# 休眠sec秒
time.sleep(20) # 暂停20秒,再输出hello world
print('hello world') # hello world
四、datetime模块详解
提供更强大的日期时间处理功能
核心类
| 类 | 描述 | 常用属性/方法 |
|---|---|---|
datetime.datetime |
日期时间对象 | now(), strftime() |
datetime.timedelta |
时间间隔 | days, total_seconds() |
datetime.date |
日期对象 | today(), year |
datetime.time |
时间对象 | hour, minute |
代码示例
from datetime import datetime,timedelta
dt = datetime.now()
print(dt) # 2025-04-12 16:52:06.815960
# datetime 是一个类,手动创建类的对象
dt2 = datetime(2025,4,12,16,54)
print(dt2) # 2025-04-12 16:54:00
print('年:',dt.year,'月:',dt.month, '日:',dt.day, '时:',dt.hour, '分:',dt.minute, '秒:',dt.second)
# 年: 2025 月: 4 日: 12 时: 16 分: 59 秒: 24
print('年:',dt2.year,'月:',dt2.month, '日:',dt2.day, '时:',dt2.hour, '分:',dt2.minute, '秒:',dt2.second)
# 年: 2025 月: 4 日: 12 时: 16 分: 54 秒: 0
# 比较两个datetime类型对象的大小,直接使用大于小于等于号
time1 = datetime(2025,5,1)
time2 = datetime(2025,10,1)
print('time1 早于 time2?',time1 < time2) # time1 早于 time2? True
# datetime类型与字符串进行转化
nowdt = datetime.now()
nowdt_str=nowdt.strftime('%Y/%m/%d/ %H:%M:%S')
print('nowdt的数据类型:',type(nowdt),'nowdt表示的数据:',nowdt)
# nowdt的数据类型: <class 'datetime.datetime'> nowdt表示的数据: 2025-04-12 17:08:18.173473
print('nowdt_str的数据类型:',type(nowdt_str),'nowdt_str表示的数据:',nowdt_str)
# nowdt_str的数据类型: <class 'str'> nowdt_str表示的数据: 2025/04/12/ 17:08:18
# 字符串类型转化datetime类型
str_nowdt = '2025/04/12 17:08:18'
dt3=datetime.strptime(str_nowdt,'%Y/%m/%d %H:%M:%S')
print('str_nowdt的数据类型:',type(str_nowdt),'str_nowdt表示的数据:',str_nowdt)
# str_nowdt的数据类型: <class 'str'> str_nowdt表示的数据: 2025/04/12 17:08:18
print('dt3的数据类型:',type(dt3),'dt3表示的数据:',dt3)
# dt3的数据类型: <class 'datetime.datetime'> dt3表示的数据: 2025-04-12 17:08:18
# 使用timedelta类
# 创建两个datetime类对象
delta1 = datetime(2025,5,1)-datetime.now()
print('delta1 的数据类型:',type(delta1),'dt3表示的数据:',delta1 )
# delta1 的数据类型: <class 'datetime.timedelta'> dt3表示的数据: 18 days, 6:40:20.397863
print('18天之后是哪一天:',datetime.now()+delta1) # 18天之后是哪一天: 2025-05-01 00:00:00
# 通过传参方式创建一个timedelta对象
delta2 = timedelta(10)
print('创建一个10天的timedelta对象:',delta2) # 创建一个10天的timedelta对象: 10 days, 0:00:00
delta3 = timedelta(10,10)
print('创建一个10天的timedelta对象:',delta3) # 创建一个10天的timedelta对象: 10 days, 0:00:10
from datetime import datetime, timedelta
# 当前时间
now = datetime.now()
print(f"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}") # # 当前时间: 2025-04-12 17:24:33
# 时间计算
future = now + timedelta(days=7, hours=3)
print(f"7天3小时后: {future}") # 7天3小时后: 2025-04-19 20:24:33.708886
# 日期提取
today = now.date()
print(f"今天日期: {today}") #今天日期: 2025-04-12
应用示例
- 推算几天后的日期
import datetime
# 输入日期函数
def input_time():
inputdate=input('请输入日期:(20250419)回车')
datestr = inputdate[0:4]+'-'+inputdate[4:6]+'-'+inputdate[6:8]
# 类型处理
dt = datetime.datetime.strptime(datestr,'%Y-%m-%d')
return dt
if __name__ == '__main__':
time = input_time()
num =eval(input('请输入间隔数:'))
day = time + datetime.timedelta(days=num)
daystr = datetime.datetime.strftime(day,'%Y-%m-%d')
print('您推算的日期为:',daystr)
----------
请输入日期:(20250419)回车20250419
请输入间隔数:20
您推算的日期为: 2025-05-09
五、最佳实践建议
-
随机数安全:加密场景请使用
secrets模块而非random -
时区处理:建议使用
pytz库处理复杂时区 -
性能计时:高精度计时推荐使用
time.perf_counter() -
日期运算:优先使用
datetime而非手动计算

浙公网安备 33010602011771号