迭代器

第一类对象-> 函数名 -> 变量名
        函数对象对象可以像变量一样进行赋值
        还可以作为列表的元素进行使用
        可以作为返回值返回
        可以作为参数进行传递
    闭包 -> 函数的嵌套
        内层函数对外层函数中的变量的使用
        好处:
            1. 保护变量不被侵害
            2. 让一个变量常驻内存
        如何通过代码查看一个闭包
        __closure__: 有东西就是闭包. 没东西就不是闭包
    迭代器 -> 固定的思路. for循环
        一个数据类型中包含了__iter__函数表示这个数据是可迭代的
        dir(数据): 返回这个数据可以执行的所有操作
        判断迭代器和可迭代对象的方案(野路子)
        __iter__            可迭代的
        __iter__  __next__  迭代器
        判断迭代器和可迭代对象的方案(官方)
        from collections import Iterable, Iterator
        isinstance(对象, Iterable) 是否是可迭代的
        isinstance(对象, Iterator) 是否是迭代器
        模拟for循环
        lst= []
        # 拿迭代器
        it = lst.__iter__()
        while 1:
            try:
                it.__next__()
            except StopIteration:
                break
        特征:
            1. 省内存(生成器)
            2. 惰性机制
            3. 只能向前. 不能后退
        作用:统一了各种数据类型的遍历
posted @ 2018-12-10 21:16  墨尔本的情书  阅读(84)  评论(0编辑  收藏  举报