python语法-yield关键字

121 阅读1分钟

简介

yield关键字返回一个生成器(generator),生成器又是一个可迭代的对象(iterables).

几个有关概念

迭代器

通过迭代的方式进行遍历,而不用像数组一般通过位置进行索引.迭代器一般来说可以通过next()方法获取下一个,进行顺序的遍历,也可以通过for item in Iterator结构来遍历迭代器中的元素.

生成器

生成器实现了迭代器接口,但是不同之处在于,其产生的值并不是一次性的装入内存,而是在需要时动态生成item.是一个动态生成元素的数据结构,而非静态生成.可以将生成器理解为一个动态生成元素的list.

yield作用

  1. yield类似return,会返回一个生成器对象,只有当该生成器对象需要被访问时,才会生成计算结果.

yield用法

通过循环生成generator

def create_generator():
   for i in range(3):
     yield i*i # 返回一个generator对象,对象中的元素由for循环赋值
 mygenerator = create_generator()
 for i in mygenerator:#遍历生成器
   print(i)
 #output:0,1,2

yield的好处

  1. 动态生成数据,随取随生成,不用一次性全部将元素放在内存,减少内存消耗
  2. 消耗低
  3. yield关键字不同于return,其返回generator对象之后并不会停止后续语句的运行