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

Python自定義裝飾器原理與用法實例分析

 更新時間:2018年07月16日 09:22:46   作者:噴跑的豆子  
這篇文章主要介紹了Python自定義裝飾器原理與用法,結(jié)合實例形式較為詳細(xì)的分析了Python自定義裝飾器,帶參數(shù)的裝飾器等概念、原理、實現(xiàn)方法及相關(guān)使用技巧,需要的朋友可以參考下

本文實例講述了Python自定義裝飾器原理與用法。分享給大家供大家參考,具體如下:

什么是裝飾器?裝飾器本質(zhì)是一個函數(shù),它可以在不改變原來的函數(shù)的基礎(chǔ)上額外的增加一些功能。如常見的@classmethod,@staticmethod等都是裝飾器,接下來記錄下如何自定義個裝飾器:

剛剛說過了,裝飾器的本質(zhì)就是一個函數(shù),所有想要自定義一個裝飾器,首先自定義一個函數(shù)

def decorate(func):
  def wrapper(*args,**kwargs):
    print("定義一個裝飾器")
    func(*args,**kwargs)
  return wrapper

此時就已經(jīng)定義好了一個基本的裝飾器,那該如何調(diào)用呢?

@decorate
def text1():
  print("text1")
text1()

輸出的結(jié)果為:

定義一個裝飾器
text1

分析:此時的@decorate相當(dāng)于將text1函數(shù)的內(nèi)存地址傳入decorate函數(shù),并返回wrapper函數(shù)的內(nèi)存地址。因此在代碼結(jié)尾中調(diào)用text1()本質(zhì)上是執(zhí)行wrapper函數(shù)。因為執(zhí)行的是wrapper函數(shù),所以會打印”定義一個裝飾器”,又因為func函數(shù)是text1的內(nèi)存地址,所以調(diào)用func,會打印”text1”。

帶參數(shù)的裝飾器

上面介紹了一個簡單的裝飾器如何定義,可是我們常??吹揭粋€裝飾器@xxxxxxx(abc="python"),這種裝飾器是如何封裝的,原理又是怎么樣的呢

def decorate(name):
  def wrapper(func):
    def sub_wrapper(*args,**kwargs):
      print("定義一個帶參數(shù)的裝飾器",name)
      func(*args,**kwargs)
    return sub_wrapper  
  return wrapper
@decorate(name="python")
def text1():
  print("text1")
text1()

輸出結(jié)果:

定義一個帶參數(shù)的裝飾器 python
text1

分析:帶參數(shù)的裝飾器與普通的裝飾器多加了一層,其實就是講“python”參數(shù)傳入decorate函數(shù),并返回wrapper函數(shù)的內(nèi)存地址,再將text1函數(shù)內(nèi)存地址傳入wrapper函數(shù),并返回了sub_wrapper函數(shù)的內(nèi)存地址。而在代碼末尾調(diào)用text1,其實本質(zhì)是調(diào)用了sub_wrapper函數(shù)。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Python下的Mysql模塊MySQLdb安裝詳解

    Python下的Mysql模塊MySQLdb安裝詳解

    在Python環(huán)境下,如果想操作MySQL數(shù)據(jù)庫,難免會調(diào)用相應(yīng)的包,比如常用的:MySQLdb通過導(dǎo)入:import MySQLdb 后,可直接調(diào)用里面的方法
    2014-04-04
  • 對python使用telnet實現(xiàn)弱密碼登錄的方法詳解

    對python使用telnet實現(xiàn)弱密碼登錄的方法詳解

    今天小編就為大家分享一篇對python使用telnet實現(xiàn)弱密碼登錄的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python 3.8 新功能全解

    Python 3.8 新功能全解

    這篇文章主要介紹了Python 3.8 新功能全解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python設(shè)置在shell腳本中自動補全功能的方法

    Python設(shè)置在shell腳本中自動補全功能的方法

    今天小編就為大家分享一篇Python設(shè)置在shell腳本中自動補全功能的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python極值整數(shù)的邊界探討分析

    Python極值整數(shù)的邊界探討分析

    這篇文章主要介紹了Python極值整數(shù)的邊界探討分析,閱讀本文來一起領(lǐng)略Python中的極值,看一下Python整數(shù)是否有邊界,有需要的朋友可以借鑒參考下
    2021-09-09
  • 對Python Class之間函數(shù)的調(diào)用關(guān)系詳解

    對Python Class之間函數(shù)的調(diào)用關(guān)系詳解

    今天小編就為大家分享一篇對Python Class之間函數(shù)的調(diào)用關(guān)系詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 三行Python代碼提高數(shù)據(jù)處理腳本速度

    三行Python代碼提高數(shù)據(jù)處理腳本速度

    Python是一門非常適合處理數(shù)據(jù)和自動化完成重復(fù)性工作的編程語言,我們在用數(shù)據(jù)訓(xùn)練機器學(xué)習(xí)模型之前,通常都需要對數(shù)據(jù)進(jìn)行預(yù)處理,而Python就非常適合完成這項工作。本文將為大家介紹如何利用Python代碼讓你的數(shù)據(jù)處理腳本快別人4倍,需要的可以參考一下
    2022-03-03
  • 在Python中過濾Windows文件名中的非法字符方法

    在Python中過濾Windows文件名中的非法字符方法

    今天小編就為大家分享一篇在Python中過濾Windows文件名中的非法字符方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 使用Python生成XML的方法實例

    使用Python生成XML的方法實例

    這篇文章主要介紹了使用Python生成XML的方法,結(jié)合具體實例形式詳細(xì)分析了Python生成xml文件的具體流暢與相關(guān)注意事項,需要的朋友可以參考下
    2017-03-03
  • python填充彩色圖形的實現(xiàn)示例

    python填充彩色圖形的實現(xiàn)示例

    本文主要介紹了python填充彩色圖形的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論

启东市| 上思县| 天等县| 灵武市| 长阳| 隆德县| 衡东县| 怀柔区| 大厂| 江达县| 张家口市| 临沭县| 交城县| 格尔木市| 波密县| 延边| 连平县| 驻马店市| 西乌珠穆沁旗| 富民县| 寿宁县| 林周县| 璧山县| 宿州市| 洪洞县| 海门市| 英吉沙县| 来宾市| 固阳县| 龙江县| 宜宾市| 西丰县| 永胜县| 贵德县| 宝坻区| 金溪县| 清流县| 静海县| 滨海县| 东莞市| 洪江市|