📦 模块一:keyword —— 关键字检测

keyword 模块用于判断一个字符串是否为 Python 的保留关键字(如 iffordef 等),在动态代码生成或语法高亮工具中很有用。

方法/属性 说明
keyword.kwlist 获取所有 Python 关键字的列表(字符串列表)
keyword.iskeyword(s) 判断字符串 s 是否为 Python 关键字,返回布尔值
keyword.issoftkeyword(s) 判断字符串 s 是否为 Python 软关键字(如 matchcase),返回布尔值
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 三大内置模块 keywordrandomtime 的所有核心方法,并提供了详细的注释和实战案例:

  • keyword:用于关键字检测,避免命名冲突。
  • random:提供丰富的随机数生成和序列操作功能。
  • time:处理时间戳、结构化时间、格式化转换和程序休眠。

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

Logo

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

更多推荐