1. 程式人生 > >裝飾遞歸函數

裝飾遞歸函數

def get 結束時間 pytho __name__ pan als 為什麽 UNC

裝飾遞歸函數:

簡潔版:
import time

def GetRunFunc(func):
    Call = True
    if Call:
        def Call_Func(*args, **kwargs):
            Call = False
            start_time = time.time()
            ret = func(*args, **kwargs)
            end_time = time.time()
            Run_time = end_time - start_time
            print
(str(func.__name__) + "函數的運行時間為:" + str(Run_time) + "秒") return ret return Call_Func
註釋版:
import time


def GetRunFunc(func):
    Call = True
    if Call:
        # if Call: 此判斷語句是針對裝飾遞歸函數的情況, 如果裝飾過此函數後, 就不再裝飾
        def Call_Func(*args, **kwargs):
            Call =
False start_time = time.time() # 開始時間 ret = func(*args, **kwargs) # 調用被裝飾的函數, func(*args, **kwargs), 調用函數為什麽用func內, 裝時器的特性, 將被裝飾的函數的名字當作參數傳遞進來進行裝飾 end_time = time.time() # 結束時間 Run_time = end_time - start_time # 運行時間 = 結束時間 - 開始時間
print(str(func.__name__) + "函數的運行時間為:" + str(Run_time) + "秒") return ret # 將被裝飾的函數的返回 return Call_Func # 返回函數的引用

裝飾遞歸函數