知其然,知其所以然
Python 2026-09-29

pathlib:路径对象如何替代字符串拼路径

本机真实验证Path的/运算符在右操作数是绝对路径时会完全丢弃左边,这是一个真实存在的路径穿越隐患,并对比.和..的处理差异。

Python 标准库 真实验证 动画演示
Python 2026-09-29

tempfile:临时文件什么时候会自动删除

本机真实验证临时文件在打开期间被重新打开的平台相关行为,以及TemporaryDirectory即使在异常场景下依然可靠的自动清理机制。

Python 标准库 真实验证 动画演示
Python 2026-09-29

subprocess:Python 如何启动并管理外部进程

本机真实构造一段包含shell特殊字符的字符串,验证shell=True字符串拼接会真实发生命令注入,shell=False列表参数则完全免疫,并确认timeout参数会真的主动终止子进程。

Python 标准库 真实验证 动画演示
Python 2026-09-29

signal:进程收到信号后到底发生什么

本机真实给自己发送不同信号,验证自定义信号处理函数的真实触发、SIGINT默认转换成可捕获的KeyboardInterrupt,以及信号处理机制绑死在主线程上的限制。

Python 标准库 真实验证 动画演示
Python 2026-09-29

socket:一次 TCP 连接如何从 Python 代码走到内核

本机真实建一条 TCP 连接,每 0.08 秒采样一次 netstat:服务端从没调用 accept(),客户端的 connect() 已经在 0.377 ms 内返回且两端都是 ESTABLISHED;三次 send 被合成一次 recv;并按阶段记录 CLOSE_WAIT / FIN_WAIT_2 / TIME_WAIT 出现的位置。

Python 标准库 网络 真实验证 动画演示
Python 2026-09-29

selectors:一个线程如何监听多个 socket

本机用 selectors(macOS 下默认是 KqueueSelector)让一个线程同时监听 5 个 socket,逐轮记录 select() 的返回;验证水平触发下不读数据会被重复通知、写事件与内核发送缓冲区(本机 626168 字节)的关系,并对比 200 个连接一个线程和 201 个线程的 echo 耗时。

Python 标准库 网络 I/O多路复用 真实验证 动画演示
Python 2026-09-29

sqlite3:Python 内置数据库如何执行事务

本机真实验证 sqlite3 模块的隐式事务(INSERT 才 BEGIN,SELECT 和 DDL 不会)、未提交数据对其他连接不可见、第二个写连接得到 database is locked;读游标未读完会让默认日志模式下的 commit 失败而 WAL 模式不会;逐条 commit 每行 266 µs,放进一个事务每行 0.8 µs。

Python 标准库 数据库 SQLite 真实验证 动画演示
Python 2026-09-29

pickle:为什么反序列化不可信数据很危险

本机用一个只写标记文件的无害载荷真实验证:pickle.loads 在反序列化时就执行了 os.system,返回的是 0 而不是原对象;用 pickletools 反汇编 54 字节的载荷,用 allowlist 的 find_class 拦截,并把每条 opcode 之后的真实栈状态做成逐步演示。

Python 标准库 安全 序列化 真实验证 动画演示
Python 2026-09-29

json:自定义对象如何被序列化

本机真实记录 json 自定义序列化的调用顺序:default 只在遇到不认识的对象时触发(本例 3 次:set、User、date),object_hook 由内到外触发;并实测往返丢类型(tuple→list、int 键→str)、NaN 输出非法 JSON、重复键静默覆盖、default 返回自身抛 Circular reference。

Python 标准库 序列化 真实验证 动画演示
Python 2026-09-29

secrets、random 和 hashlib:三种随机需求不要混用

本机真实验证:random.seed(42) 两次得到同一串数;观察 random 的 624 个 32 位输出后还原出 Mersenne Twister 完整状态,连续预测出接下来的整数、浮点数和一个 12 位「重置令牌」全部命中,而对 secrets.SystemRandom 同样的攻击命中 0/5;并测得 hashlib 跨进程恒定、内置 hash() 跨进程变化。

Python 标准库 安全 随机数 真实验证 动画演示
Python 2026-09-29

HMAC:为什么“哈希加密钥”不能随便自己拼

本机用自己实现并与 hashlib 对拍通过的 SHA-256,真实对 sha256(secret+message) 做长度扩展攻击:不知道 16 字节密钥就伪造出 role=admin 的合法签名并通过服务端验证;同样方法对 hmac 无效;并测得 == 比较在第 1 字节与最后 1 字节不同时耗时相差约 1.6 万倍(0.04 µs 对 632 µs),compare_digest 恒定。

Python 标准库 安全 密码学 真实验证 动画演示
Python 2026-09-29

Python 密码存储:为什么不能直接 sha256(password)

本机真实暴力枚举 sha256 存储的 6 位数字口令:试了 482916 次,用时 250 ms 就找到;对比 pbkdf2_hmac(60 万次迭代,每次约 64 ms)与 scrypt 的每次耗时,并验证加盐后相同口令不再产生相同哈希。

Python 标准库 安全 密码学 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号