python 装饰器使用,打印函数调用层级_1

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

版权声明:本文为sky0Lan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。