📦 模块一: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:处理时间戳、结构化时间、格式化转换和程序休眠。

掌握这些模块的用法,能让你在日常开发中更加得心应手,无论是语法检查、数据采样还是时间处理,都能高效完成。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐