闭包、迭代器

一、函数名的应用以及第一类对象

  函数名可以向变量一样使用

  函数名可以进行赋值

  函数名可以充当容器中的元素类型

  函数名可以充当参数‘

  函数名可以作为函数名的返回值

二、

  闭包

  

 def func():
     name = "alex"   # 常驻内存  防止其他程序改变这个变量
     def inner():
         print(name) # 在内层函数中调用了外层函数的变量,叫闭包, 可以让一个局部变量常驻内存
     return inner

 ret = func()
 ret() # 执行的是inner()

  内部函数访问外部函数的局部变量

  特点;

  安全

  常驻内存,提高效率

三、迭代器

  可迭代对象:内部含有_ _ iter_ _

  迭代器:内部含有_ _iter_ _,_ _next_ _

  str , list,  dict,  tuple, set 都是可迭代对象,但不是迭代器

  文件的句柄 ,range(),是迭代器。

  迭代器的特点:

    节省内存

    惰性机制

    只能向前,不能回退。

四、

  lst = ['秦始皇', '汉武帝', '齐桓公', '晋文公']

  it = lst._ _iter_ _() 

  while 1:

     try:

     name = _ _next_ _()

     except StopIteration:

       break

     

原文地址:https://www.cnblogs.com/wf123/p/9325823.html