天天看點

Python-詳解裝飾器及反射原理

一、裝飾器

裝飾器:裝飾函數和類,作用:擴充增加函數和類的功能

二、裝飾器的分類

兩大類:裝飾器函數和裝飾器類

三、裝飾器函數定義及應用

函數: 封裝代碼最小單元,提供代碼複用性

  • 裝飾器函數利用函數的一些特征:
    1. 函數可以用為參數;
  • 裝飾器函數可以裝飾所有的函數(有參數,沒參數)
import time


def runTime(func):
    """
    裝飾函數
    原來功能 + 擴充的功能: 統計每個函數的耗時
    :param func:
    :return:
    """
    def wrapper(*args,**kwargs):
        start = time.time()
        #原來功能
        func(*args, **kwargs)
        end = time.time()
        cost = end - start
        print(f"統計函數使用時長:{func.__name__}耗時{cost}s")
    return wrapper

  
@runTime
def test_no_params():
    print("這是一個無參數的裝飾器測試")
    
    

@runTime
def test_have_params(*args,**kwargs):
    sum = 0
    for num in args:
        sum += num
    print(f"求和: {sum}")
    return sum

  
test_no_params()
test_have_params(2,4,3,5,6,8,9)           

三十六般武藝,七十二般變化,修練出個人品牌并發出光芒