美文网首页
python之yield和yield from

python之yield和yield from

作者: stay丶gold | 来源:发表于2018-08-05 21:22 被阅读0次

yield,使用 yield 的函数被称为生成器(generator),跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象

def fun(x):
    for i in range(x):
        yield i

print (list(fun(5)))

>>> [0, 1, 2, 3, 4]

yield from, yield from 后面可以跟“ 生成器 元组 列表等可迭代对象和序列,返回也是一个生成器(generator)

def fun(x):
    for i in range(x):
        yield i

def fun1(x):
    yield 'hello'
    yield from fun(x)
    yield from ['a','b','c','d']
    yield from range (10,15)

print (list(fun1(5)))
>>> ['hello', 0, 1, 2, 3, 4, 'a', 'b', 'c', 'd', 10, 11, 12, 13, 14]

个人理解:yield把返回来的值组合成一个生成器,而yield from则把返回的(生成器,元组,列表等)组合成一个大的生成器

相关文章

网友评论

      本文标题:python之yield和yield from

      本文链接:https://www.haomeiwen.com/subject/yulivftx.html