欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

案例:

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

              f.__name__           函數(shù)名

              f.__doc__              函數(shù)文檔

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

              f.__dict__              屬性字典

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

              ……

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

       需求:

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

如何實(shí)現(xiàn)?

       通過 functools中的wraps, update_wrapper方法實(shí)現(xiàn),每個(gè)都可單獨(dú)實(shí)現(xiàn)

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

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

相關(guān)文章

  • Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例

    Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例

    這篇文章主要介紹了Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 最新評(píng)論