python之yield的一些应用
生成器
- yield是用于生成器。生成器通俗的认为,在一个函数中,使用了yield来代替return的位置的函数,就是生成器。它不同于函数的使用方法是:函数使用return来进行返回值,每调用一次,返回一个新加工好的数据返回给你;yield不同,它会在调用生成器的时候,把数据生成object,然后当需要用的时候,要用next()方法来取,同时不可逆。
- 如果一个函数中有return返回值,而且在return下面还有代码:那么return下面的代码将不会被执行,而yield却不同,它返回值后还可以继续执行下面的代码
def mygen(n): now = 0 while now < n: yield now now += 1 if __name__ == '__main__': gen = mygen(4) # 通过交替执行,来说明这两种方法是等价的。 print(gen.send(None)) print(next(gen)) print(gen.send(None)) print(next(gen))
携程
yield from
后面需要加的是可迭代对象,它可以是普通的可迭代对象,也可以是迭代器,甚至是生成器。如果是生成器,就实现了生成的嵌套。它的功能很强大,主要是可以让我们避免让我们自己处理各种料想不到的异常