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

五、最佳实践建议

  1. 随机数安全:加密场景请使用secrets模块而非random

  2. 时区处理:建议使用pytz库处理复杂时区

  3. 性能计时:高精度计时推荐使用time.perf_counter()

  4. 日期运算:优先使用datetime而非手动计算

posted @ 2025-04-12 17:27  kyle_7Qc  阅读(47)  评论(0)    收藏  举报