day013 迭代器和生成器

一、迭代器(iterator)

  迭代器协议 —— 内部含有__next__和__iter__方法的就是迭代器。for循环其实就是在使用迭代器。

迭代器的好处:
  从容器类型中一个一个的取值,会把所有的值都取到。
  节省内存空间
  迭代器并不会在内存中再占用一大块内存,
  而是随着循环 每次生成一个
  每次next每次给我一个

二、生成器(genetator)

  生成器本质是迭代器的一种,是我们自己写的函数

1 def generator():
2     print(1)
3     return 'a'
4 
5 ret = generator()
6 print(ret)
example

  只要含有yield关键字的函数都是生成器函数, 执行之后会得到一个生成器作为返回值(个人理解:yeild相当于return 和 下一次执行标记)

  yield不能和return共用且需要写在函数内

  特点:
    调用函数的之后函数不执行,返回一个生成器
    每次调用next方法的时候会取到一个值
    直到取完最后一个,在执行next会报错

从生成器中取值的几个方法
  next
  for
  数据类型的强制转换 : 占用内存

 

 

posted @ 2018-10-11 10:35  wangspy  阅读(37)  评论(0)    收藏  举报