闭包和迭代器

1. 函数名第一类对象
函数名其实就是变量名
1. 可以像变量一样互相赋值
2. 可以作为函数的参数, 进行传递
3. 可以作为返回值返回
4. 可以作为集合的元素进行存储

__name__ 查看函数的名字
__doc__ 查看函数的文档注释

2. 闭包(函数的嵌套, 返回函数名): 内部函数对外部函数中的变量的调用
作用:
1. 保护变量
2. 常驻内存
基本写法:
def outer():
    a = 10
    def inner():
        print(a)
    return inner
3. 迭代器(用)
1. Iterable: 可迭代的, 里面有__iter()__
2. Iterator: 迭代器, 里面有__iter()__, 还有 __next__()

特点:
1. 节省内存
2. 惰性机制(只有执行__next__()才会取值)
3. 只能向前, 不能反复

dir() 查看数据可以执行的方法
还可以引入collections 中的Iterable和Iterator
isinstance() 判断xxx对象是否是xxx类型

for循环的内部用的是迭代器
lst = [1, 2,3]
it = lst.__iter__()
while 1:
    try:
        it.__next__()
    except StopIteration:
        break 
posted @ 2018-09-18 17:47  凯旋.Lau  阅读(171)  评论(0编辑  收藏  举报