亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么為被裝飾的函數保留元數據

發布時間:2021-02-18 13:39:37 來源:億速云 閱讀:126 作者:小新 欄目:開發技術

小編給大家分享一下python怎么為被裝飾的函數保留元數據,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

案例:

       在函數對象中保存著一些函數的元數據,如:

              f.__name__           函數名

              f.__doc__              函數文檔

              f.__moudle__       函數所屬模塊名

              f.__dict__              屬性字典

              f.__defaults__       默認參數組

              ……

       在使用裝飾器后,在裝飾器里訪問以上屬性時,我們看到的是裝飾器函數的元數據

       需求:

              實現在裝飾器函數中,保留 被裝飾函數 的元數據

如何實現?

       通過 functools中的wraps, update_wrapper方法實現,每個都可單獨實現

#!/usr/bin/python3
 
import time
from functools import (wraps, update_wrapper, WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES)
 
 
def count_time(func):
  """
  給目標函數加上計算運行時間統計
  """
  # 這個裝上器和update_wrapper一樣,默認參數WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES
  @wraps(func)
  def wrapper(*args, **kwargs):
    start_time = time.time()
     
    # 定義result接收函數返回值,并且在裝飾函數最后返回回去
    resutl = func(*args, **kwargs)
    print('運行時間:', time.time()-start_time)
    return resutl
   
  # 其中默認參數 WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES
  # update_wrapper(wrapper, func)
  return wrapper
 
 
@count_time
def add(num=100):
  """
  計算 0~num 累加值,默認num=100
  """
  time.sleep(1)
  return sum([x for x in range(num+1)])
 
if __name__ == '__main__':
  print('函數名:', add.__name__)
  print('屬性字典:', add.__dict__)
  print('函數默認參數:', add.__defaults__)
  print('函數所在模塊:', add.__module__)
  print('函數文檔:', add.__doc__)
   
  # 打印兩個默認參數
  print(WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES)
  result = add()
  print(result)

看完了這篇文章,相信你對“python怎么為被裝飾的函數保留元數據”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪雅县| 大新县| 安化县| 峨山| 静海县| 昂仁县| 武邑县| 贺州市| 连南| 文水县| 萍乡市| 红河县| 如皋市| 虞城县| 宣恩县| 广安市| 龙门县| 安陆市| 临朐县| 天水市| 本溪| 双流县| 纳雍县| 东阿县| 洪洞县| 安塞县| 临颍县| 大石桥市| 汉中市| 滨州市| 兴文县| 阿瓦提县| 新余市| 中宁县| 永年县| 溆浦县| 屏边| 乌拉特中旗| 合水县| 临猗县| 康平县|