今天学习了闭包 装饰器 作用域
LEGB 局部,函数作用域 全局 内置
闭包条件 (在函数中提出的这个概念)
1 有 内层函数
2 内层函数引用了外层函数的变量
3 返回了外层函数
闭包格式
def hello():
word = 5
def wrap(*args, **kwargs):
print(word)
return wrap
闭包变量不会回收 所以不同参数打印的值是不会影响的
装饰器
def decorate(*args,**kwargs):------------》装饰器接收参数可以不用写这一层
def hello(func):---------》接收函数的参数
word = 5
def wrap(*args, **kwargs):---------------》返回可变参数万能
func(*aggs, **kwargs)
print(word)
return wrap
return hello
@hello(()这个如果没有接收参数就不写这个括号)
func ():
print ('hello')
可以套两层
@hello
@hello2
hello():
pass
谁和函数隔的近先执行谁