裝飾器的作用及使用方法是什麼?

金木大大大發表於2023-12-05

  裝飾器是一種特殊的函式,用於修改、擴充套件或包裝其他函式或類的行為。它可以在不修改原函式或類的情況下,動態地新增額外的功能或修改其行為。


  裝飾器的作用包括:


  擴充套件功能:透過裝飾器可以在不修改原函式或類的情況下,為其新增新的功能或行為。這樣可以避免修改原有程式碼,保持程式碼的可維護性和可複用性。


  日誌記錄:裝飾器可以用於記錄函式或方法的呼叫日誌,包括引數、返回值等資訊,方便除錯和追蹤程式碼的執行過程。


  快取資料:裝飾器可以用於快取函式的計算結果,避免重複計算,提高程式碼的執行效率。


  許可權控制:裝飾器可以用於驗證使用者許可權,限制某些函式或類的訪問許可權,提高程式碼的安全性。


  使用方法:


  在Python中,裝飾器可以使用 符號來應用到函式或類上。裝飾器可以是一個函式或類,它接受一個函式或類作為引數,並返回一個新的函式或類。


  下面是一個簡單的裝飾器示例,用於記錄函式的執行時間:


  import time


  def timer(func):


  def wrapper(*args,**kwargs):


  start_time=time.time()


  result=func(*args,**kwargs)


  end_time=time.time()


  execution_time=end_time-start_time


  print(f"函式{func.__name__}執行時間為{execution_time}秒")


  return result


  return wrapper


   timer


  def calculate_sum(n):


  total=0


  for i in range(1,n+1):


  total+=i


  return total


  result=calculate_sum(1000000)


  print(result)


  在上面的示例中,timer裝飾器接受一個函式作為引數,並返回一個新的函式wrapper。wrapper函式在呼叫原函式之前記錄了開始時間,在呼叫原函式之後記錄了結束時間,並計算了函式的執行時間。透過使用 timer語法糖,將calculate_sum函式應用了timer裝飾器。


  當呼叫calculate_sum函式時,實際上是呼叫了被裝飾後的wrapper函式,它會在計算總和之前和之後列印出函式的執行時間。這樣可以方便地統計函式的執行時間,而不需要修改原函式的程式碼。


  裝飾器是Python中非常強大和靈活的特性,可以用於各種場景,如日誌記錄、快取、許可權控制等。透過合理地使用裝飾器,可以提高程式碼的可讀性、可維護性和可擴充套件性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70032566/viewspace-2998803/,如需轉載,請註明出處,否則將追究法律責任。

相關文章