deep = 0 def print_name(f): space = '@' def inner(*args, **kwargs): global deep print(deep*space + 'start %s' % f.__name__) deep += 4 r = f(*args, **kwargs) deep -= 4 print(deep*space + 'end %s' % f.__name__) return r return inner
@print_name def foo1(): print('foo1') @print_name def foo2(): foo1() print('foo2') @print_name def foo3(): foo2() print('foo3')
start foo2 @@@@start foo1 foo1 @@@@end foo1 foo2 end foo2 ------------------------------ start foo3 @@@@start foo2 @@@@@@@@start foo1 foo1 @@@@@@@@end foo1 foo2 @@@@end foo2 foo3 end foo3
京公网安备 11010502049817号