函数相关小记(三) 闭包

1.程序运行到函数定义的时候,其实只是把函数存入内存的一块空间里,当函数调用的时候才会执行

2.函数名其实就是变量,所以命名规范跟变量一样

def func():

   print('哈哈')

print(func) #打印的是内存地址

func = 3

print(func)#打印的是3

3.函数名可以作为参数传递给函数

def my():

  print('我是my')

def proxy(fn):

     fn()

proxy(my) 在这里函数名my作为参数传递给proxy

闭包: 内部函数调用外部函数的变量

4.闭包的作用: 1.保护变量不被侵犯 2. 让局部变量能够常驻内存

闭包:

def outer():

      a =10

      def outer1():

           print(a)

      return outer1

dir() 可以查看XX数据类型的所有方法

可迭代对象: 可以进行for循环,含有__iter__方法 都是可迭代对象 iterable

迭代器: 可以使用__iter__方法生成迭代器 ,迭代器其实就是内存地址  .迭代器特点: 1.几乎不占用内存 2.惰性机制 3.只能向下  

 

lst = []

it = lst.__iter__() #it就是迭代器 ,迭代器含有__iter__方法,主要是__next__方法

while 1:         #模拟for循环

    try :

             el = it.__next__(lst)

     except StopIterration :   #防止出现StopIterration异常

             break

判断是不是迭代对象方法:

       print('__iter__' in dir(lst))

 判断是不是迭代器:

       print('__next__' in dir(lis))

 

posted @ 2021-01-12 19:48  苦行僧冬*婷  阅读(56)  评论(0)    收藏  举报