1. 闭包函数:
1.‘闭’:其实是一个函数包含着另一个函数,这是‘闭’的概念
2.‘包’指的是内层函数包含对外层函数作用域名字的引用(不是对全局作用域)
形式1: def f1(): #外层函数 x=111 #外层函数作用域的名称 def f2(): #内层函数 print(x) 对外层函数作用域名字的引用 f2() #在外层函数调用内层函数 f1() #调用外层函数 输出结果为111 形式2: def f1(x): #外层函数 def f2(): #内层函数 print(x) 对外层函数作用域名字的引用 return f2 #返回f2的内存地址 res=f1(x)#把f2的内存地址转到全局去,可以在任意位置调用f2了 res()
2. 装饰器:装饰器需要在被装饰的函数上(通用参数和返回值)
def general_wrapper(func):
def improved_func(*args,**kwargs):
#增强功能
ret = func(*args,**kwargs)
#增强功能
return ret
return improved_func