Python裝飾器demo

無參python

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

有參code

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
相關文章
相關標籤/搜索