Python 生成器函数与表达式全解析
1. 生成器函数基础
在 Python 中, for 循环和其他迭代上下文会使用迭代协议来遍历序列或值生成器。若对象支持该协议,就能在所有迭代工具中使用。
包含 yield 语句的函数会被编译为生成器。生成器并非普通函数,调用时会返回一个支持迭代协议的对象,该对象有一个自动创建的 __next__ 方法,用于启动或恢复执行。
1.1 生成器函数示例
以下代码定义了一个生成器函数,用于生成一系列数字的平方:
def gensquares(N):
for i in range(N):
yield i ** 2 # Resume here later
这个函数在每次循环时会产生一个值并返回给调用者。当恢复执行时,会恢复之前的状态,包括变量 i 和 N 的值,控制流会从 yield 语句之后继续执行。
例如,在 for 循环中使用该函数:
for i in gensquares(5): # Resume the function
print(i, end=' : ') # Print last yielded value
</
超级会员免费看
订阅专栏 解锁全文
800

被折叠的 条评论
为什么被折叠?



