首页 > 编程语言 > 详细

python基础篇笔记03 迭代器、生成器、装饰器、内置函数

时间:2019-11-06 00:09:36      阅读:84      评论:0      收藏:0      [点我收藏+]
 

点—> 太白老师课件 <—我

 

D13 迭代器、生成器
 
 
1. 我们可以对 list,tuple,dict等类型的数据使用for循环从其中依次拿取数据进行使用,我们把这样的过程称为遍历。也叫迭代。
 
  可迭代对象: 把可以通过for循环迭代读取数据的对象称为可迭代对象。(都必须有 ‘__iter__’ 方法,即可迭代协议)
   
  常见可迭代对象:  str , list , tuple , set , dict , f1文件句柄 , itertor迭代器(迭代器也是可迭代对象)
 
  dir(obj)  对象的所有操作方法
  可迭代对象的 dir(obj)里都有‘__iter__‘这个方法,可以用来判断是否是可迭代的
    if ‘__iter__’ in dir(obj)
     通常如此判断: from collections import Iterable (Iterator)从模块引包                   
               isinstance(obj ,  Iterable)
 
  迭代器:
  在对数据迭代使用的过程中,都有个带状态的对象来帮助我们记录数据访问的位置。我们把这个帮助我们进行迭代的对象叫做迭代器。
  (卡qia子zi)
      (迭代器必须有‘__iter__‘, ‘__next__‘ 方法,即迭代器协议)  .__iter__() 返回迭代器自身, .__next__() 返回下一个值
 
       迭代器优点:  1、节省内存空间  2、满足惰性机制  3、不会反复取值
       附: try: ...... except: ....... 异常处理    (默认Exception 所有异常)
 
       可迭代对象转化成迭代器:iterob.__iter__()  console结果  iterator obj...
                       迭代器含有 __iter__   、 __next__  、 遵循迭代器协议
  
技术分享图片
 
for循环原理:
  (上卡qia子zi)
技术分享图片技术分享图片
 
2. 生成器    一种特殊的迭代器。(自主构建的特殊迭代器)
 
  python中,生成器是一次生成并返回一个对象(生成器对象,它是一个特殊的迭代器),可将其视为可恢复函数。

  在python中有三种方式来构建生成器:

    1. 通过生成器推导式  g = (lambda x: x*i for i in rang(4))

    2. 通过生成器函数  yield语句 (相当于...continue + return + hold...)CRH

    3. python内置函数或者模块提供(其实2,3两种本质上差不多,都是通过函数的形式生成,

      只不过2是自己写的生成器函数,3是python提供的生成器函数而已)

 
 
  通过生成器函数构建的话:
       简单的说,就是在函数的执行过程中,yield语句会把你需要的对象返回给调用生成器的地方,然后退出函数,
       下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用。           
       
       第一 : 函数中只要有 yield ,就是特殊函数,是生成器函数
       第二 : 一个 yield 对应一个 __next__
 
          技术分享图片
技术分享图片
 
技术分享图片
 
技术分享图片
技术分享图片
   for  i  in  xxx  :  这个过程,就是将(可迭代对象)(容器)(迭代器)(生成器)xxx 中的元素挨个拿出来给 i 
 
 
 
 
 
come on!
 

python基础篇笔记03 迭代器、生成器、装饰器、内置函数

原文:https://www.cnblogs.com/kingon/p/11802454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!