最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python如何為被裝飾的函數(shù)保留元數(shù)據(jù)

 更新時間:2018年03月21日 11:14:59   作者:北門吹雪  
這篇文章主要為大家詳細介紹了python如何為被裝飾的函數(shù)保留元數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python為被裝飾的函數(shù)保留元數(shù)據(jù)的具體代碼,供大家參考,具體內(nèi)容如下

案例:

       在函數(shù)對象中保存著一些函數(shù)的元數(shù)據(jù),如:

              f.__name__           函數(shù)名

              f.__doc__              函數(shù)文檔

              f.__moudle__       函數(shù)所屬模塊名

              f.__dict__              屬性字典

              f.__defaults__       默認參數(shù)組

              ……

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

       需求:

              實現(xiàn)在裝飾器函數(shù)中,保留 被裝飾函數(shù) 的元數(shù)據(jù)

如何實現(xiàn)?

       通過 functools中的wraps, update_wrapper方法實現(xiàn),每個都可單獨實現(xiàn)

#!/usr/bin/python3
 
import time
from functools import (wraps, update_wrapper, WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES)
 
 
def count_time(func):
  """
  給目標函數(shù)加上計算運行時間統(tǒng)計
  """
  # 這個裝上器和update_wrapper一樣,默認參數(shù)WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES
  @wraps(func)
  def wrapper(*args, **kwargs):
    start_time = time.time()
     
    # 定義result接收函數(shù)返回值,并且在裝飾函數(shù)最后返回回去
    resutl = func(*args, **kwargs)
    print('運行時間:', time.time()-start_time)
    return resutl
   
  # 其中默認參數(shù) 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('函數(shù)名:', add.__name__)
  print('屬性字典:', add.__dict__)
  print('函數(shù)默認參數(shù):', add.__defaults__)
  print('函數(shù)所在模塊:', add.__module__)
  print('函數(shù)文檔:', add.__doc__)
   
  # 打印兩個默認參數(shù)
  print(WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES)
  result = add()
  print(result)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

乐山市| 崇阳县| 铁岭县| 芜湖县| 武穴市| 和林格尔县| 乌鲁木齐县| 水城县| 商丘市| 科尔| 东阿县| 九龙城区| 龙海市| 中西区| 赤峰市| 宿松县| 连云港市| 长武县| 乌恰县| 台南县| 东海县| 铁岭市| 海安县| 阿合奇县| 白河县| 喀什市| 临朐县| 突泉县| 南和县| 蒙自县| 棋牌| 金阳县| 洪江市| 兴隆县| 嘉禾县| 赞皇县| 宿松县| 田阳县| 柯坪县| 扎鲁特旗| 长兴县|