迭代器

  

from collections import Iterable #检测一个对象是否可迭代

#   ‘——iter——’这个方法导致了一个数据类型的可迭代

      iter

      #只要包含了“双下iter”方法的数据类型就是可迭代的  —   可迭代协议

      #数据类型和pyth解释器订下来的协议

      #  print([1,2,3].__iter__())  #   list_iterator

 

     #  迭代器就是实现了能从其中一个一个的取出值来

     迭代器中有  __next__  和  __iter__  方法   ——  迭代器协议

     学过的所有可以被for循环的  基本数据类型 都是可迭代的  而不是迭代器

# 可迭代对象

       可迭代协议:含有 __iter__方法的对象

       from collections  import iterable

       print(isinstance(要检测的对象,Iterable))

#  迭代器

  # 迭代器协议:含有 __iter__ 和  __next__ 方法的对象

     from collections import Iyerator

     print(isinstance(要检测的对象,Iterator))

# 迭代器和可迭代对象之间的关系

      迭代器包含了可迭代对象

      迭代器  =   可迭代对象.__iter__() 

#   为什么要有迭代器,迭代器存在的本质是什么:

       1.能够对python中的基本数据类型进行统一的遍历,不需要关心每一个值是什么

       2.它可以节省内存 — 惰性运算

    迭代器   天生的,比如文件句柄   后天的,可迭代对象.__iter__()

 

posted @ 2017-09-04 15:34  敌说  阅读(96)  评论(0编辑  收藏  举报