Python 基础
别把 Python 当成一堆 API 的字典来背,要把它看作几个相互关联的核心模型。
本节面向 Python 3.10 及以上版本的小型同步程序,范围包括名称与对象、函数与控制流、字符串与集合、类及本地文件;不覆盖打包、异步执行、并发或整个标准库。先读语法,再读函数、条件与循环;递归中的树示例还需要列表和类的基础。带有 process 等未定义名称的代码是 API 使用模式,不是独立脚本。完整示例包含输入与断言;断言用于学习检查,不能代替输入校验,因为 Python 的 -O 选项可以禁用断言。
学习路径
核心心智模型
- 变量即引用:变量是绑定到对象的名称,赋值操作传递的是引用,而非复制对象。
- 对象三要素:每个对象都有类型(type)、身份(identity)和值(value)。
- 可变性与操作契约:可变性决定对象能否改变,具体操作的契约决定它是否修改原对象或返回结果。
- 迭代优于索引:迭代是向可迭代对象(Iterable)索取值,不局限于数字索引。
- 异常即通信:异常用于跨越调用栈传递错误信息。
- 模块即边界:模块和包定义了命名空间,确立了代码复用的所有权边界。
编码准则
- 清晰优于聪明:优先保证数据流清晰、函数粒度小,避免过度压缩表达式。
- 副作用显式化:让数据修改(Mutation)和 I/O 操作在函数边界处清晰可见。
- 复用标准库:优先使用标准库类型和协议,不要过早发明轮子或包装器。
- 类型注解:用注解说明预期类型,并用静态检查工具发现类型不匹配;外部输入仍需单独做运行时校验。
- 测试行为:测试应关注行为结果,而不是简单比对解释器的输出日志。