装饰器的功能就是在不改变原程序代码和不改变原程序函数的调用方式而为原程序增加功能。
闭包函数 内层函数对外层函数的变量的引用(不是全局变量)
闭包:当函数开始执行时,如果遇到了闭包,他有一个机制,
# 他会永远开辟一个内存空间,将必包中的变量等值放入其中,不会随着函数的执行完毕而消失
a = 'yy'
def func1(a):
def inner():
print(a)
inner()
print(inner.__closure__) 这是判断是否为闭包函数的 这个函数为非闭包函数
fun()
#yy
none
a = 'yy'
def func1(a):
a = 'yy'
def inner():
print(a)
inner()
print(inner.__closure__) 这是判断是否为闭包函数的
fun()
#yy
(<cell at 0x000001D85FFE76D8: str object at 0x000001D860080D50>,)
装饰器
def wrapper(func1):
def inner(*args,**kwargs):
pass
ret = func1(*args,**kwargs)
return ret
return inner
@wrapper
def func1(a,b,c,d): 参数可以任意设置
pass