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

 

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

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__() 返回下一个值
 
       迭代器        \节省内存空间   \\满足惰性机制   \\\不会反复取值
       附: try: ...... except: ....... 异常处理    (默认Exception 所有异常)
 
       可迭代对象转化成迭代器:iterob.__iter__()     console结果  iterator obj...
                                         迭代器含有 __iter__   、 __next__  、 遵循迭代器协议
 
2. 生成器    一种特殊的迭代器。
       python中,生成器是一次生成并返回一个对象(生成器对象,它是一个特殊的迭代器),可将其视为可恢复函数。
       简单的说,就是在函数的执行过程中,yield语句会把你需要的对象返回给调用生成器的地方,然后退出函数,
       下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用。           
       
       第一 : 函数中只要有 yield ,就是特殊函数,是生成器函数
       第二 : 一个 yield 对应一个 __next__
 
 
for循环原理:
   (上卡qia子zi)
 
 
 
*  生成器的产生方式(怎么构造一个生成器):
        *1  生成器推导式        把列表推导式的 [ ] 改成() 即可       如  g = (lambda x:x*i for i in rang(4))
        *2  生成器函数           在一个函数的定义中使用 yield 关键字,它就不再是普通函数,而是一个生成器函数。
          
    :  for  i  in  xxx  :  这个过程,就是将(可迭代对象)(容器)(迭代器)(生成器)xxx 中的元素挨个拿出来给 i 
 
 
 
 
 
come on!
 

猜你喜欢

转载自www.cnblogs.com/kingon/p/11802454.html