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

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

 更新時(shí)間:2018年03月21日 11:14:59   作者:北門(mén)吹雪  
這篇文章主要為大家詳細(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ù)組

              ……

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

       需求:

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

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

       通過(guò) 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)

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

相關(guān)文章

  • Python連接Oracle的多種方式小結(jié)

    Python連接Oracle的多種方式小結(jié)

    Oracle數(shù)據(jù)庫(kù)是一種強(qiáng)大的企業(yè)級(jí)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),而Python是一門(mén)流行的編程語(yǔ)言,兩者的結(jié)合可以提供出色的數(shù)據(jù)管理和分析能力,本教程將詳細(xì)介紹如何在Python中連接Oracle數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2024-08-08
  • Python辦公自動(dòng)化之文件的比較合并與xml操作

    Python辦公自動(dòng)化之文件的比較合并與xml操作

    這篇文章主要為大家詳細(xì)介紹了Python辦公自動(dòng)化之文件的比較合并與xml文件操作的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-12-12
  • 詳解python如何調(diào)用C/C++底層庫(kù)與互相傳值

    詳解python如何調(diào)用C/C++底層庫(kù)與互相傳值

    Python作為一門(mén)腳本解釋語(yǔ)言,本身又很好的結(jié)合C++,所以使用Python開(kāi)發(fā),在性能要求的地方調(diào)用C/C++底層庫(kù),這簡(jiǎn)直是神器。本文詳細(xì)介紹了Python調(diào)用C/C++底層庫(kù),互相傳值問(wèn)題,下面一起來(lái)看看。
    2016-08-08
  • 使用Python和OpenCV進(jìn)行圖像處理和分析

    使用Python和OpenCV進(jìn)行圖像處理和分析

    圖像處理和分析是計(jì)算機(jī)視覺(jué)領(lǐng)域的重要組成部分,本文將介紹如何使用Python編程語(yǔ)言和OpenCV庫(kù)進(jìn)行圖像處理和分析,我們將涵蓋圖像讀取、顯示、濾波、邊緣檢測(cè)和圖像分割等常見(jiàn)的圖像處理操作,并提供相應(yīng)的代碼示例
    2023-07-07
  • python網(wǎng)絡(luò)編程之多線程同時(shí)接受和發(fā)送

    python網(wǎng)絡(luò)編程之多線程同時(shí)接受和發(fā)送

    這篇文章主要為大家詳細(xì)介紹了python網(wǎng)絡(luò)編程之多線程同時(shí)接受和發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 提高Python生產(chǎn)力的五個(gè)Jupyter notebook插件

    提高Python生產(chǎn)力的五個(gè)Jupyter notebook插件

    Jupyter Notebook 因其可用性和實(shí)用性而成為數(shù)據(jù)分析和機(jī)器學(xué)習(xí)模型領(lǐng)域最流行的 IDE,它也是很多數(shù)據(jù)初學(xué)者的首選 IDE。它最具特色的是,擁有豐富的插件、擴(kuò)展數(shù)據(jù)處理能力和提升工作效率
    2021-11-11
  • 我喜歡你 抖音表白程序python版

    我喜歡你 抖音表白程序python版

    我喜歡你!這篇文章主要為大家詳細(xì)介紹了抖音表白程序python版的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python中安裝easy_install的方法

    Python中安裝easy_install的方法

    這篇文章主要介紹了Python中安裝easy_install的方法,需要的朋友可以參考下
    2018-11-11
  • Python入門(mén)之面向?qū)ο蠛皖?lèi)

    Python入門(mén)之面向?qū)ο蠛皖?lèi)

    這篇文章主要為大家介紹了Python面向?qū)ο蠛皖?lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例

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

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

最新評(píng)論