Lobsters | 原文链接 | 2026-09-08 收录

Python 冰山:藏在语言水面下的四十多个「会咬人」的隐秘行为

来源: aleyan.com — 2026-09-08

概述

这是把 Python 行为陷阱按「冰山」隐喻排成的一张清单页:水面之上是新手常见坑,水面之下是藏得深、一踩就懵的冷门角落,共有四十多项且每项都给出官方文档或 issue 出处。从可变默认参数、循环变量泄漏、zip 静默截断、惰性闭包、NaN 非自反、[[]]*3 别名共享,到 eval/exec 与反序列化并非沙箱、银行家舍入、边遍历边改集合、字符串驻留、bool 是 int 子类、random 不安全、-O 会删掉 assert、裸 except 连 Ctrl-C 都吞、strip() 删的是字符集而非前后缀、GIL、ctypes 结构体交换陷阱、audit hook 的静默否决、bytearray.extend 溢出等,几乎覆盖了从语言语义到 C API、再到多进程/共享内存的各个角落。

核心要点

金句

eval() evaluates a Python expression and exec() executes Python statements. Neither is a sandbox.
返回 Lobsters 首页