Python 三大内置模块超全汇总:keyword / random / time 一篇搞定!
·
📦 模块一:keyword —— 关键字检测
keyword 模块用于判断一个字符串是否为 Python 的保留关键字(如 if、for、def 等),在动态代码生成或语法高亮工具中很有用。
| 方法/属性 | 说明 |
|---|---|
keyword.kwlist |
获取所有 Python 关键字的列表(字符串列表) |
keyword.iskeyword(s) |
判断字符串 s 是否为 Python 关键字,返回布尔值 |
keyword.issoftkeyword(s) |
判断字符串 s 是否为 Python 软关键字(如 match、case),返回布尔值 |
keyword.softkwlist |
获取所有软关键字的列表(Python 3.10+) |
✅ 案例演示
import keyword
1. 查看所有 Python 关键字
print("🔑 所有关键字列表:")
print(keyword.kwlist)
输出示例:['False', 'None', 'True', 'and', 'as', 'assert', ...]
2. 判断一个字符串是否为关键字
test_words = ["for", "hello", "class", "world"]
for word in test_words:
result = keyword.iskeyword(word)
print(f"'{word}' 是否为关键字?{result}")
输出:
'for' 是否为关键字?True
'hello' 是否为关键字?False
'class' 是否为关键字?True
'world' 是否为关键字?False
3. 软关键字检查(Python 3.10+)
if hasattr(keyword, 'issoftkeyword'):
print(f"'match' 是软关键字吗?{keyword.issoftkeyword('match')}")
print(f"软关键字列表:{keyword.softkwlist}")
💡 应用场景:在开发自定义脚本语言、代码生成器或语法检查工具时,避免使用关键字作为变量名或标识符。
🎲 模块二:random —— 随机数生成器
random 模块是 Python 中实现伪随机功能的核心工具,涵盖浮点数、整数、序列随机选取等多种操作。
| 方法 | 说明 |
|---|---|
random.random() |
生成 [0.0, 1.0) 之间的随机浮点数 |
random.uniform(a, b) |
生成 [a, b] 之间的随机浮点数 |
random.randint(a, b) |
生成 [a, b] 之间的随机整数(包含两端) |
random.randrange(start, stop[, step]) |
在 range(start, stop, step) 范围内随机选一个整数 |
random.choice(seq) |
从非空序列 seq 中随机选取一个元素 |
random.choices(seq, weights=None, cum_weights=None, k=1) |
从序列中随机选 k 次(可重复,k 可大于元素个数) |
random.sample(seq, k) |
从序列中随机选 k 个不重复的元素(k 需 ≤ 序列长度) |
random.shuffle(seq) |
将序列 seq 原地随机打乱顺序 |
random.seed(a=None, version=2) |
初始化随机数生成器的种子,用于复现随机序列 |
random.getstate() |
获取当前随机数生成器的内部状态 |
random.setstate(state) |
用之前保存的状态恢复随机数生成器 |
random.getrandbits(k) |
生成一个 k 位长的随机整数 |
random.triangular(low, high, mode) |
返回三角分布的随机浮点数 |
random.betavariate(alpha, beta) |
返回 Beta 分布的随机浮点数 |
random.expovariate(lambd) |
返回指数分布的随机浮点数 |
random.gammavariate(alpha, beta) |
返回 Gamma 分布的随机浮点数 |
random.gauss(mu, sigma) |
返回高斯(正态)分布的随机浮点数 |
random.lognormvariate(mu, sigma) |
返回对数正态分布的随机浮点数 |
random.normalvariate(mu, sigma) |
返回正态分布的随机浮点数 |
random.vonmisesvariate(mu, kappa) |
返回冯·米塞斯分布的随机浮点数 |
random.paretovariate(alpha) |
返回帕累托分布的随机浮点数 |
random.weibullvariate(alpha, beta) |
返回威布尔分布的随机浮点数 |
✅ 案例演示
import random
1. random() —— [0, 1) 浮点数
print(f"随机浮点数 (0~1): {random.random()}")
2. uniform(a, b) —— [a, b] 浮点数
print(f"随机浮点数 (5~10): {random.uniform(5, 10)}")
3. randint(a, b) —— [a, b] 整数(注意:包含两端)
print(f"随机整数 (1~6): {random.randint(1, 6)}")
4. randrange(start, stop) —— range 范围内随机整数
print(f"0~9 随机整数: {random.randrange(0, 10)}") # 不包含 10
print(f"0~10 步长2: {random.randrange(0, 10, 2)}") # 输出 0,2,4,6,8
5. choice(seq) —— 随机选一个
fruits = ["苹果", "香蕉", "橘子", "西瓜"]
print(f"随机水果: {random.choice(fruits)}")
6. choices(seq, k) —— 随机选 k 次(可重复)
print(f"随机选 5 次(可重复): {random.choices(fruits, k=5)}")
输出可能:['橘子', '苹果', '橘子', '西瓜', '香蕉']
7. sample(seq, k) —— 随机选 k 个(不重复)
print(f"随机选 2 个(不重复): {random.sample(fruits, k=2)}")
输出可能:['西瓜', '香蕉']
8. shuffle(seq) —— 原地打乱顺序
cards = ["红桃A", "黑桃K", "方块Q", "梅花J"]
random.shuffle(cards)
print(f"打乱后的牌: {cards}")
9. seed —— 固定随机种子,使结果可复现
random.seed(42)
print(f"固定种子后的随机数: {random.random()}")
random.seed(42)
print(f"再次固定种子,结果相同: {random.random()}")
⚠️ 重要区别:
choices:有放回抽取,可以重复,k可以大于序列长度。sample:无放回抽取,不重复,k必须 ≤ 序列长度。randint(a, b)包含b,而randrange(start, stop)不包含stop,类似range。
⏰ 模块三:time —— 时间处理
time 模块提供了与时间相关的各种函数,包括时间戳、结构化时间、格式化转换以及程序休眠。
| 分类 | 方法 | 说明 |
|---|---|---|
| 时间戳 | time.time() |
获取当前时间戳(秒,浮点数) |
int(time.time() * 1000) |
获取当前时间戳(毫秒,整数) | |
| 结构化时间 | time.localtime([secs]) |
将时间戳转为本地时间结构体(struct_time),不传参则用当前时间 |
time.gmtime([secs]) |
将时间戳转为 UTC 时间结构体(struct_time) |
|
time.mktime(t) |
将本地时间结构体 t 转为时间戳(秒) |
|
time.strftime(format[, t]) |
将时间结构体 t 转为格式化字符串 |
|
| 格式转换 | time.strptime(string[, format]) |
将格式化字符串按指定格式解析为时间结构体 |
time.asctime([t]) |
将时间结构体转为可读字符串,如 "Tue Dec 10 18:07:14 2024" | |
| 程序控制 | time.sleep(secs) |
让当前线程休眠指定秒数(可以是浮点数) |
time.perf_counter() |
返回性能计数器的值(高精度,用于测量短时间间隔) | |
time.process_time() |
返回当前进程的系统和用户 CPU 时间总和(秒) | |
| 其他 | time.ctime([secs]) |
将时间戳转为可读字符串,如 "Tue Dec 10 18:07:14 2024" |
time.timezone |
本地时区偏移量(秒,UTC 以西为正) |
✅ 案例演示
import time
1. 时间戳
timestamp_sec = time.time()
timestamp_ms = int(time.time() * 1000)
print(f"当前时间戳(秒): {timestamp_sec}")
print(f"当前时间戳(毫秒): {timestamp_ms}")
2. 结构化时间
local_time = time.localtime() # 当前本地时间
utc_time = time.gmtime() # 当前 UTC 时间
print(f"本地时间结构体: {local_time}")
print(f"UTC 时间结构体: {utc_time}")
print(f"年: {local_time.tm_year}, 月: {local_time.tm_mon}, 日: {local_time.tm_mday}")
print(f"时: {local_time.tm_hour}, 分: {local_time.tm_min}, 秒: {local_time.tm_sec}")
3. 格式转换
结构体 → 字符串
formatted = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print(f"格式化时间: {formatted}")
字符串 → 结构体
parsed = time.strptime("2024-12-10 18:30:00", "%Y-%m-%d %H:%M:%S")
print(f"解析后的结构体: {parsed}")
4. 可读字符串
print(f"asctime: {time.asctime(local_time)}")
print(f"ctime: {time.ctime()}")
5. 时间戳与结构体互转
ts = time.mktime(local_time) # 结构体转时间戳
print(f"结构体转时间戳: {ts}")
print(f"时间戳转结构体: {time.localtime(ts)}")
6. 程序休眠
print("开始休眠 1.5 秒...")
time.sleep(1.5)
print("休眠结束")
7. 性能计时
start = time.perf_counter()
time.sleep(0.1)
end = time.perf_counter()
print(f"耗时: {end - start:.6f} 秒")
8. 时区信息
print(f"本地时区偏移(秒): {time.timezone}")
print(f"夏令时标志: {time.localtime().tm_isdst}")
📌 常用格式化符号:
%Y:四位年份(如 2024)%m:月份(01-12)%d:日(01-31)%H:小时(00-23)%M:分钟(00-59)%S:秒(00-59)%A:星期全称(如 Monday)%a:星期缩写(如 Mon)%B:月份全称(如 December)%b:月份缩写(如 Dec)
📚 总结
本文系统梳理了 Python 三大内置模块 keyword、random、time 的所有核心方法,并提供了详细的注释和实战案例:
- keyword:用于关键字检测,避免命名冲突。
- random:提供丰富的随机数生成和序列操作功能。
- time:处理时间戳、结构化时间、格式化转换和程序休眠。
掌握这些模块的用法,能让你在日常开发中更加得心应手,无论是语法检查、数据采样还是时间处理,都能高效完成。
更多推荐


所有评论(0)