"""
python装饰器的参数
"""
def func1(function_name):
print("--------装饰器---1--------")
def fucn1_inner(a,b):
print("-----fucn1_inner----start---------")
function_name(a,b)
print("-----fucn1_inner----end---------")
print("--------装饰器---2--------")
return fucn1_inner
@func1
def test(a,b):
print("-------test()---------")
print("a=%d, b=%d"%(a,b))
test(1,2)
print("-"*120)
"""
传入多参数
"""
def func2(function_name):
print("--------装饰器---1--------")
def fucn2_inner(*args,**kwargs):#传入多参数都可以
print("-----fucn1_inner----start---------")
function_name(*args, **kwargs)
print("-----fucn2_inner----end---------")
print("--------装饰器---2--------")
return fucn2_inner
@func2
def test2(a,b):
print("-------test()---------")
print("a=%d, b=%d"%(a,b))
@func2
def test3(a,b,c):
print("-------test()---------")
print("a=%d, b=%d c=%d"%(a,b,c))
test2(111,222)
test3(444, 555, 666)
函数调用图:
运行结果:
--------装饰器---1--------
--------装饰器---2--------
-----fucn1_inner----start---------
-------test()---------
a=1, b=2
-----fucn1_inner----end---------
------------------------------------------------------------------------------------------------------------------------
--------装饰器---1--------
--------装饰器---2--------
--------装饰器---1--------
--------装饰器---2--------
-----fucn1_inner----start---------
-------test()---------
a=111, b=222
-----fucn2_inner----end---------
-----fucn1_inner----start---------
-------test()---------
a=444, b=555 c=666
-----fucn2_inner----end---------