Pyhton 10 迭代器和闭包

迭代器的一些概念

迭代器协议 —— 内部含有__next__和__iter__方法的就是迭代器
迭代器协议和可迭代协议
可以被for循环的都是可迭代的
可迭代的内部都有 __iter__ 方法
只要是迭代器,一定可迭代
可迭代的对象 .iter() 方法就可以得到一个迭代器
迭代器中的 __next__() 方法可以一个一个的获取值

for循环其实就是在使用迭代器

#for循环的流程:
it = lst.__iter__()
  while 1:
     try: el = it.__next__() #for循环的循环体 except StopIteration: break

  


只有 是可迭代对象的时候,才能用for
当我们遇到一个新的变量,不确定能不能for循环的时候,就判断它是否可迭代。

迭代器的好处:
      1. 省内存

      2. 惰性机制

      3. 只能往前. 不能后退

 

   闭包

   闭包: 在内层函数中引入外层函数的变量
 作用:
  1. 保护变量不受侵害(javascript)
  2. 让一个变量常驻内存

例子一

def func():
    a = 10 # 安全的
    def func2():
        print(a)
    def func3():
        print(a)
    def func4():
        nonlocal a
        a = 20

  

 

 

 

 

 

 

 

posted @ 2018-11-01 17:29  恩佐MIG-U1  阅读(123)  评论(0编辑  收藏  举报