Python 迭代器与推导式全解析
1. 生成器与迭代器基础
1.1 yield from
的作用
yield from
的正式名称是“委托给子生成器”,它在包含生成器和内部生成器对象之间建立了更深层次的联系。例如下面的代码:
def matching_lines_from_file(pattern, path):
lines = lines_from_file(path)
yield from matching_lines(lines, pattern)
生成器对象有一些方法,如 send()
、 throw()
和 close()
,用于将信息传递回正在运行的生成器函数的上下文。不过这些方法目前使用并不广泛,若要深入了解可阅读 PEPs 342 和 380。当使用这些方法时, yield from
对于使信息能够流回正在运行的协程作用域是必要的。
1.2 Python 中的迭代器无处不在
迭代在 Python 中随处可见。内置的 range()
函数返回一个可迭代对象:
seq = range(3)
print(type(seq)) # <class 'range'>
for n in seq:
print