课堂笔记day11

11. 前⽅⾼能-迭代器

一,函数名的使用

     函数名是个变量,但他是个特殊的变量,与括号配合可以执行函数的变量

     1. 函数名的内存地址

      

      2. 函数名可以赋值给其他变量

      

       3. 函数名可以当做容器类的元素

       

         

         4. 函数名可以当做函数的参数

         

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

    

二,闭包

          闭包:内层函数,对外层函数的变量的引用

           def func():

             name = 'alex'

             def func1():

                     print(name)

                   func1()

            func()

                 结果是alex,以上就是一个闭包

            我们可以使⽤__closure__来检测函数是否是闭包. 使⽤函数名.__closure__返回cell就是

       闭包. 返回None就不是闭包

       

       闭包的作用就是让一个变量能够常驻内存,供后边的程序使用.

三. 迭代器

  str,list,tuple,dict,set,文件操作的句柄(r)这些都是可迭代对象,都遵循可迭代协议.

  我们可以通过dir函数来查看类中定义好的所有方法.

        s = '我的哇哈哈'

         print(dir(s)) 

    print(dir(s)) 

    

     

   

   

      

    print('__iter__'  in dir(lst) )    判断是不是可迭代对象

    print('__next__' in dir (lst))    判断是不是迭代器

    迭代对象只用有__iter__就行

    迭代器必须要__iter__ 和 __next__ 都有才行

    

    for循环的机制:

    for i in [1,2,3]:

      print(i)

    

    lst = [1,2,3]

    lst_iter = lst.__iter__()

    while Ture:

      try:

        i = lst_iter.__next__()

        print(i)

      except StopIteration:

        break

    

             

   

  

            

      

猜你喜欢

转载自www.cnblogs.com/lovezwfjc/p/9326764.html