Python 生成器:功能、应用与示例
1. Python 3.3 中 yield 语句的扩展语法
在 Python 3.3 里,引入了 yield 语句的扩展语法,借助 from generator 子句,能将操作委托给子生成器。在简单情形下,它等同于 for 循环。
示例代码如下:
# 旧语法
def both(N):
for i in range(N): yield i
for i in (x ** 2 for x in range(N)): yield i
print(list(both(5)))
# 新语法
def both(N):
yield from range(N)
yield from (x ** 2 for x in range(N))
print(list(both(5)))
print(' : '.join(str(i) for i in both(5)))
新语法更为简洁清晰,还能处理所有常见的生成器使用场景。在更高级的应用中,此扩展允许子生成器直接从调用范围接收 send 和 throw 值,并将最终值返回给外部生成器,从而可将生成器拆分为多个子生成器。
2. 内置类型、工具和类中的结果生成
许多内置类型也具备生成器的特性。例如,字典是可迭代对象,每次迭代会生成键:
Python生成器详解与实战
超级会员免费看
订阅专栏 解锁全文

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



