datetime 和 random 是 Python 中两个非常强大且常用的内置模块,分别用于处理日期时间和生成随机数。你是否遇到过需要处理复杂日期计算,或者生成随机测试数据的场景?这两个模块就是你的得力助手。
📅 datetime 模块
datetime 模块是 Python 处理日期和时间问题的利器,提供了 date、time、datetime 和 timedelta 等核心类,可以满足从获取当前时间到复杂时间计算的各种需求。
获取当前日期和时间
你可以使用 datetime.now() 来获取当前的日期和时间,或使用 date.today() 来获取当前日期。
from datetime import datetime, date
# 获取当前日期和时间
now = datetime.now()
print("当前日期和时间:", now)
# 获取当前日期
today = date.today()
print("当前日期:", today)
日期时间的运算
timedelta 类用于表示两个时间点之间的时间差,可以用来进行日期的加减运算,非常直观。
from datetime import datetime, timedelta
# 获取当前时间
now = datetime.now()
# 计算3天后的日期
future_date = now + timedelta(days=3)
print("三天后:", future_date)
# 计算两个时间点的差值
time_diff = future_date - now
print("时间差 (秒):", time_diff.total_seconds())
格式化与转换
strftime 和 strptime 方法可以实现 datetime 对象与字符串之间的相互转换,这是数据存储和展示的常见需求。
from datetime import datetime
# 将 datetime 对象格式化为字符串
now = datetime.now()
formatted_date = now.strftime("%Y年%m月%d日 %H:%M")
print("格式化后:", formatted_date)
# 将字符串解析为 datetime 对象
date_str = "2026-01-01"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print("解析后:", parsed_date)
🎲 random 模块
random 模块用于生成伪随机数,提供了生成随机整数、浮点数以及从序列中随机选择或打乱元素等功能,在模拟、测试、游戏开发中应用广泛。
生成随机数
random 模块可以生成指定范围内的随机整数和浮点数,需要注意不同函数对范围端点的包含关系。
import random
# 生成一个 [0.0, 1.0) 之间的随机浮点数
print("随机浮点数:", random.random())
# 生成一个 [1, 10] 范围内的随机整数 (包含1和10)
print("随机整数:", random.randint(1, 10))
# 生成一个 [1, 10) 范围内的随机整数 (包含1, 不包含10)
print("随机整数:", random.randrange(1, 10))
随机选择与打乱
你可以使用 choice、choices、sample 和 shuffle 等方法对列表等序列进行随机操作,实现抽奖、数据采样等功能。
import random
fruits = ['apple', 'banana', 'cherry']
# 从列表中随机选择一个元素
print("随机选择:", random.choice(fruits))
# 从列表中随机选择两个元素 (结果可能重复)
print("随机选择 (可重复):", random.choices(fruits, k=2))
# 从列表中随机选择两个不重复的元素
print("随机选择 (不重复):", random.sample(fruits, k=2))
# 打乱列表顺序 (原地修改)
random.shuffle(fruits)
print("打乱后:", fruits)
设置随机种子
通过 random.seed() 设置种子,可以确保每次生成的随机数序列是相同的。这在调试和复现实验结果时非常有用,能保证程序行为的一致性。
import random
# 设置随机种子
random.seed(42)
print(random.random()) # 每次运行结果都相同
random.seed(42)
print(random.random()) # 与上一次结果相同
以上就是 Python 中 datetime 和 random 两个内置核心模块的基础用法。熟练掌握它们,能让你在日常开发中更加游刃有余地处理时间与随机性问题。如果你想深入探讨更多 Python 开发技巧或系统设计知识,欢迎来 云栈社区 与大家交流。