目录
一、闭包
概念:
1、存在函数的嵌套关系 2、内层函数引用了外层函数的变量 3、外层函数返回内层函数的地址值
demo
def welcome(fun):
def function():
print("欢迎光临")
fun()
return function
如代码所示,内层函数function引用了外层函数welcome 的fun变量,外层函数welcome返回了内层函数function的地址值。
二、装饰器
概念:
1、存在闭包 2、存在需要被装饰的函数
demo
def welcome(fun):
def function():
print("欢迎光临")
fun()
return function
@welcome
def login():
print("登录成功")
如代码所示,被装饰的函数是login,@加上闭包后,装饰器可以正常使用,执行顺序为
1、装饰器生效,先执行闭包里面的函数function,执行print(“欢迎光临”),然后执行fun()
2、执行fun()的时候,是把login函数当做值传进welcome函数,等同于执行login函数,所以后面打印(“登录成功”)