91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

霸州市| 富宁县| 旺苍县| 广西| 宁晋县| 鲁甸县| 鞍山市| 金平| 武夷山市| 姜堰市| 淳化县| 莱州市| 共和县| 唐山市| 盐边县| 习水县| 望谟县| 长武县| 山丹县| 青龙| 九龙城区| 高邑县| 宕昌县| 吴旗县| 漳浦县| 临江市| 怀安县| 乌兰县| 天长市| 蒲城县| 寿宁县| 图木舒克市| 惠东县| 滨海县| 湄潭县| 浑源县| 枣阳市| 台南市| 滨州市| 沙坪坝区| 介休市|