章节摘要:本章讲两件事——控制流与函数。但视角换了:for 不是"计数器",是"向对象要迭代器";函数不是"代码段",是"一等对象 + 携带环境的闭包"。学完本章,你能读懂回调、推导式、作用域规则与 LEGB,为装饰器打下地基。
阅读完本章,你应当能够:
iter 与 next 手动复现一次 for 循环,说出迭代协议的两个方法;*args/**kwargs、仅位置/仅关键字参数与解包调用。for 循环的真相是一次协议对话:拿迭代器、反复 next、捕获停止信号。函数的真相是一个带环境的 callable 对象。
if/match 的取舍、while 的适用面、for 背后的迭代协议,以及推导式这一 Python 标志性语法。
函数是一等对象;LEGB 查找规则;默认参数、*args/**kwargs;闭包与延迟绑定的坑。
3.1 建立"循环即迭代协议"的世界观,5 大容器都是它的实现者;3.2 把"可调用"抽象成对象,环境(作用域)随之登场。二者在第 7 章合流:生成器是"可暂停的迭代器函数",装饰器是"包住函数的函数"。
前置:第 1 章名字绑定、第 2 章容器基础操作。
本章还有一个隐藏目标:把"遍历"与"调用"这两个高频动作从语法反射升级为机制反射。看到推导式能想到它只是循环的收集形态,看到函数能想到它是个带行李的可调用对象——这种翻译能力一旦建立,后面读任何框架源码,装饰器、回调、路由这些花活都只是本章机制的组合应用。
为后续铺垫:第 7 章生成器与装饰器、第 9 章回调风格的异步编程,全部以本章为地基。