1 yield from的基本用法
yield from
是python3.3引入的,下面以几个例子说明yield from的作用。
例子一:
def gen1(iterable):
yield iterable
def gen2(iterable):
yield from iterable
g1 = gen1(range(10))
for v in g1:
print(v)
g2 = gen2(range(10))
for v in g2:
print(v)
遍历打印g1时直接打印了生成器对象,就跟直接执行print(range(10))
的结果是一样的,直接将参数的可迭代对象给返回了,而遍历打印g2时,就跟直接遍历range(10)的结果是一样的,也就是说,这里yield from对iterable进行了解析,并返回,因此,这里的yield from可以直接替换成
# yield from
def gen2(iterable):
for v in iterable:
yield v
那么,yield from就是