这里记录我在学习 Python 过程中遇到的问题:语言特性背后的机制、并发与性能、类型系统的学习曲线,以及实践中的取舍。每篇都附可运行的代码片段。
笔记
可变默认参数、闭包与作用域:三个最容易误判的细节
默认参数只求值一次、闭包捕获变量而非值、nonlocal 与类作用域的区别——这些不是冷知识,是写代码时最容易踩的错误来源。
asyncio 里最常见的三个错误:阻塞调用、超时与取消
协程不是线程。一个同步 requests 调用就能让整个事件循环停摆;wait_for 与 TaskGroup 的语义差别决定异常会不会被吞掉。
给已有代码加类型注解:从 0 到 mypy 通过
先给边界加类型、再逐步收紧内部;Any 是逃生口不是终点。附 mypy 渐进式配置与常见误报的处理。
别猜,量它:cProfile 与逐行计时的正确姿势
用 cProfile 找热点、用 timeit 验证微优化、用 tracemalloc 抓内存增长点;顺序错了等于白忙。