当已经会编程时再学习 Python,会面临一个奇怪的问题。你不需要别人解释什么是变量、条件或循环,但仅仅记住更简洁的语法也不够。困难在于恢复——或者说构建——写出在生产环境中自然、可维护且可预测的 Python 所需的判断力。 最有效的进步方式不是压缩一门初学者课程,而是改变学习顺序:从那些影响你设计决策的差异开始,并在可以运行、也可以刻意弄坏的短小示例中逐一练习。 1. 翻译心智模型,而不是逐行翻译代码 从 Java、C#、JavaScript、Go 或 C++ 过来的人,通常首先会把自己已经知道的东西逐字翻译过来。程序能运行,但保留了 Python 不需要的结构、抽象和仪式感。 建议尽早审视以下问题: • 可变性、别名和同一性; • 解包、推导式和惰性迭代; • 作为对象的函数和闭包; • 上下文管理器; • dataclasses 与数据边界; • 能使代码融入语言对象模型的特殊方法。 这些不是冷知识。它们解释了为什么两个正确的实现可能在清晰度和行为上相差很大。 2. 用类型标注设计边界 注解在描述契约时才有价值。一个 Protocol、一个窄化的返回类型或一个定义良好的 callable,可以把策略与其实现分开,让 API 更易于测试。 相反,用注解填满每个局部变量很少能改进设计。一个好的练习是:先定义组件的公共接口,再创建多个满足该接口的实现。这样一来,类型标注就不再是装饰,而成了发现耦合的工具。 3. 根据负载选择并发模型 Python 提供了多种模型,但没有一种放之四海而皆准: • 线程适合阻塞式输入/输出操作; • 进程可以把 CPU 密集型工作隔离开来; • 当许多协作任务大部分时间都在等待时,asyncio 很有用。...