摘要: 教科书上说 list.append() 是均摊 O(1)。 但直觉上这很反常:list 底层是一块连续内存,加一个元素就得重新分配一块更大的、把旧的拷过去。拷一次是 O(n),拷 n 次不就是 O(n²)? 教科书没错,直觉也没完全错——关键是它不是每次都拷。 先看真实的扩容行为 用 sys.get 阅读全文
posted @ 2026-11-01 09:27 小小张说故事 阅读(5) 评论(0) 推荐(0)
摘要: 我之前写性能敏感的循环,习惯把函数调用尽量提出去、能内联就内联。但一直说不清「一次 Python 函数调用到底花在哪」。今天用 CPython 3.13.14 的 timeit 把一次空函数调用拆到纳秒级,结论和我直觉差得挺远。 本机:CPython 3.13.14 (64-bit),所有数字来自 阅读全文
posted @ 2026-10-31 12:01 小小张说故事 阅读(6) 评论(0) 推荐(0)
摘要: 很多人学 Python 多线程时都被泼过冷水:"Python 的多线程是假的,因为有 GIL。"这句话流传很广,但真正被锁住的到底是什么,多数人讲不清。今天我把它拆开,再用一段实测告诉你:什么时候 GIL 在拖后腿,什么时候它其实无所谓。 一、GIL 不是 Python 语言的锁,是 CPython 阅读全文
posted @ 2026-10-30 09:18 小小张说故事 阅读(13) 评论(0) 推荐(0)
摘要: 很多人用 with open() 用得很顺,但被问到"它到底比 try/finally 强在哪"就卡壳。其实 with 不是语法糖那么简单——它是 Python 用"协议"而非"约定"把资源管理焊死在语言层。今天拆开看 CPython 3.13 里 with 到底走了哪几步,以及它比手写 try/f 阅读全文
posted @ 2026-10-29 18:09 小小张说故事 阅读(6) 评论(0) 推荐(0)
摘要: 结论先行:同一个模块,首次 import 花 2048 微秒,第二次只要 1.1 微秒——差了约 1800 倍。中间隔着的不是魔法,是 sys.modules 这个全局缓存。所以"函数里写 import 会不会很慢"这类担心基本是多余的:实测函数内重复 import 10 万次,每次只要 193 纳 阅读全文
posted @ 2026-10-28 11:19 小小张说故事 阅读(7) 评论(0) 推荐(0)
摘要: 「写列表别用 for+append,用列表推导更快」——这话对一半。我在 CPython 3.13.14 上跑了一组实测,结论有点反常识。 实测:三种写法同台比 对比三种:列表推导 [i*2 for i in range(n)]、预分配后索引赋值、裸 append 循环。单位微秒,取每组最快一轮: 阅读全文
posted @ 2026-10-27 10:39 小小张说故事 阅读(5) 评论(0) 推荐(0)
摘要: Python 3.11 有个少有人讲清的变化:try 块在正常路径上不再收门票了。实测(CPython 3.13.14)带 try 的函数 147.8 ns/次,不带 try 的 151.7 ns/次——差额 -3.9 ns,落在噪声里。与此同时,真正抛出一次异常要 562 ns,是正常路径的 3. 阅读全文
posted @ 2026-10-25 15:35 小小张说故事 阅读(10) 评论(0) 推荐(0)
摘要: 几乎每个 Python 教程都会告诉你:「is 比较身份,别用它比较数字,因为只有 -5 到 256 的小整数被驻留」。可如果你真在机器上敲一遍,会看到一个让教程作者尴尬的结果:257 is 257 返回 True。 而 int('257') is int('257') 返回 False。 同一个 阅读全文
posted @ 2026-10-23 16:18 小小张说故事 阅读(7) 评论(0) 推荐(0)
摘要: 结论先行:GIL 不是「Python 慢」的病因,而是「同一进程里多个线程不能同时跑字节码」的一把大锁——CPU 密集型任务上,2 个线程跑 2 份活的实测加速比是 1.00x(156ms 的活,单线程 156ms,双线程 312ms,一点没省);但 I/O 密集型任务上 4 个线程能拿到 1.6x 阅读全文
posted @ 2026-10-22 08:58 小小张说故事 阅读(22) 评论(0) 推荐(0)
摘要: 结论先行:with 不是语法糖版的 try/finally——它把「资源生命周期」拆成了两次函数调用:enter 拿资源、exit 还资源,而 exit 的返回值就是异常的生杀大权:返回 True,异常被当场吞掉;返回 False 或 None,异常原样穿透。更反直觉的是 @contextmanag 阅读全文
posted @ 2026-10-21 08:39 小小张说故事 阅读(4) 评论(0) 推荐(0)