无参
def test(fun):
print('log - 1')
def decorator(a, b):
print('log - 3')
fun(a, b)
print('log - 4')
print('log - 2')
return decorator
@test
def fun(a, b):
print(a + b)
if __name__ == '__main__':
fun(10, 20)
output:
-----------------
log - 1
log - 2
log - 3
30
log - 4
有参
def test(arg):
print('log - 1')
def _start(fun):
print('log - 3')
def decorator(a, b):
print('log - 5 ')
fun(a, b)
print(' log - 6')
print('log - 4')
return decorator
print('log - 2')
return _start
@test('abc')
def fun(a, b):
print(a + b)
if __name__ == '__main__':
fun(10, 20)
output:
--------------------
log - 1
log - 2
log - 3
log - 4
log - 5
30
log - 6