【Python 高频 API 速学 ⑦ · 完结篇】
一、为什么叫「3 小彩蛋」?
• 它们不是主角,却在日志、测试、调试里频繁露脸;
• 每个只需一行,就能让脚本瞬间「专业」起来。
二、三颗彩蛋一览
彩蛋 | 核心功能 | 最常用一行 | 备注 |
---|---|---|---|
datetime | 时间戳 ⇋ 字符串 | datetime.now().isoformat() | 自带 +timedelta |
random | 随机 & 抽样 | random.choice(seq) | 还有 sample , shuffle |
breakpoint | 一行调试入口 | breakpoint() | 自动进入 pdb |
三、一行代码场景秀
- 生成 ISO-8601 日志时间戳
from datetime import datetime
ts = datetime.now().isoformat(timespec='seconds')
print(f'[{ts}] INFO start crawling')
- 计算 7 天后的日期
from datetime import timedelta
expiry = datetime.now() + timedelta(days=7)
- 随机挑 5 位中奖用户
import random
winners = random.sample(all_users, 5)
- 打乱列表做 A/B 测试
random.shuffle(test_group)
- 一行调试:在循环里看变量
for record in records:if record['price'] < 0:breakpoint() # 自动停在这里
- 时间戳文件名防重名
from datetime import datetime
fname = f"backup_{datetime.now():%Y%m%d_%H%M%S}.zip"
四、mini 实战:5 行脚本「日志 + 随机 + 调试」一条龙
需求:读取 data.txt
,随机打印 3 行并加时间戳;若行数不足 3,则触发调试。
from datetime import datetime
import random, pathlib, syslines = pathlib.Path('data.txt').read_text().splitlines()
if len(lines) < 3:breakpoint() # 现场调试
for ln in random.sample(lines, 3):print(datetime.now().isoformat(), ln)
运行演示:
$ python log_rand.py
2024-02-28T21:33:01 line-42
2024-02-28T21:33:01 line-7
2024-02-28T21:33:01 line-99
五、记忆口诀
“datetime 记时间,random 玩随机,breakpoint 一键停。”