1. 函数名 -> 第一类对象
        函数名就是变量名.
        函数可以赋值
        函数可以作为集合类的元素
        函数可以作为参数传递
        函数可以作为返回值返回
    2. 闭包
        语法: 内层函数对外层函数的局部变量的使用
        def wrapper():
            name = ""
            def inner():
                return name
            return inner

        如何查看一个函数是否是闭包
        函数名.__closure__  有值就是闭包. None就不是闭包

        优点:
            1. 保护变量不被侵害 (javascript)
            2. 可以让一个变量常驻内存

    3. 迭代器
        在数据中包含了__iter__是一个可迭代对象.
        for循环内部

        it = lst.__iter__()
        while 1:
            try:
                it.__next__()
            except StopIteration:
                break

        特点:
            1. 节省内存
            2. 惰性机制
            3. 只能向前, 不能反复

        意义: 统一数据类型的遍历工作

        官方查看xxx是迭代器, 可迭代对象
        from collections import Iterable, Iterator

        isinstance(对象, Iterable)
        isinstance(对象, Iterator)

        迭代器一定可迭代   ->   for循环
        可迭代的不一定是迭代器
View Code

相关文章: