python 装饰器和闭包

装饰器         就是函数       功能是为其他函数添加附加功能



def timer(func):
def inner(*args,**kwargs):
print("执行装饰器")
return func(*args,**kwargs)
return inner

@使用装饰器



@timer
def test(l):
for i in range(l):
print(i)


test(100)

函数也可以成为对象
l = test
<function timer.<locals>.inner at 0x000001F0468FF950>



闭包
外部看不见内部调用的方法 也无法调用 但是结果是受内部方法影响的
def outer(name):
def inner(name):
print("inner"+name)

inner(name)

outer("a")

自己实现装饰器 无法返回参数 无法转递参数
def outer(func):
def inner():
     print("执行装饰器")
        func()
return inner

@outer
def test2(l):
for i in range(l):
print(i)

test(10)

执行装饰器
0
1
2
3
4
5
6
7
8
9


#使用
*args,**kwargs传入参数 func在执行*args,**kwargs运行返回   就是装饰器了     可以返回参数 可以传递参数
def outer(func):    
def inner(*args,**kwargs):
print("执行装饰器")
return func(*args,**kwargs)
return inner

@outer
def test2(l):
for i in range(l):
print(i)
return l;
a = test2(10)
print(a)
print(a)


原文地址:https://www.cnblogs.com/hywhyme/p/11599221.html