4.14 展开嵌套的序列
可以写一个包含 语句的递归生成器来轻松解决这个问题。比如:
在上面代码中, isinstance(x, Iterable)
检查某个元素是否是可迭代的。如果是的话, yield from
就会返回所有子例程的值。最终返回结果就是一个没有嵌套的简单序列了。
语句 yield from
在你想在生成器中调用其他生成器作为子例程的时候非常有用。如果你不使用它的话,那么就必须写额外的 循环了。比如:
尽管只改了一点点,但是 yield from
语句看上去感觉更好,并且也使得代码更简洁清爽。
最后要注意的一点是, 在涉及到基于协程和生成器的并发编程中扮演着更加重要的角色。可以参考12.12小节查看另外一个例子。
原文: