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则把返回的(生成器,元组,列表等)组合成一个大的生成器
网友评论