1. 程式人生 > 實用技巧 >python裝飾器兩種方式

python裝飾器兩種方式

1.普通裝飾器

def decorate(fun):
    '''
    普通裝飾器
    :param fun:
    :return:
    '''
    def inner(*args,**kwargs):
        print('呼叫裝飾器之前')
        fun(*args, **kwargs)
        print('呼叫裝飾器之後')

    return inner

@decorate  #method=decorate(method)
def method01(a,b):
    print('兩個引數的和是',a+b)

if __name__
== '__main__': method01(1,2)

2.增強裝飾器有名帶參裝飾器

def dynamic_report(target):
    '''
    帶參裝飾器
    :param target: 裝飾器傳進來的引數
    :return: 
    '''
    def decorate(fun):
        def inner(*args,**kwargs):
            print('呼叫時候傳進來的引數',target)
            fun(*args,**kwargs)
            print('呼叫後傳進來的引數
',target) return inner return decorate @dynamic_report('我是裝飾器傳進來的') def method(a,b): print('method方法',a+b) if __name__ == '__main__': method(1,2)

def dynamic_report(target01,target02):
    '''
    帶參裝飾器
    :param target: 裝飾器傳進來的引數
    :return:
    '''
    def decorate(fun):
        
def inner(*args,**kwargs): print('呼叫時候傳進來的引數',target01,target02) fun(*args,**kwargs) print('呼叫後傳進來的引數',target01,target02) return inner return decorate @dynamic_report('zxb','zxl') def method(a,b): print('method方法',a+b)