国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python中多個裝飾器的執(zhí)行順序

or0fun / 3404人閱讀

今天講一下python中裝飾器的執(zhí)行順序,以兩個裝飾器為例。

裝飾器代碼如下:

def wrapper_out1(func):
    print("--out11--")

    def inner1(*args, **kwargs):
        print("--in11--")
        ret = func(*args, **kwargs)
        print("--in12--")
        return ret
    print("--out12--")
    return inner1


def wrapper_out2(func):
    print("--out21--")

    def inner2(*args, **kwargs):
        print("--in21--")
        ret = func(*args, **kwargs)
        print("--in22--")
        return ret
    print("--out22")
    return inner2


@wrapper_out2
@wrapper_out1
def test():
    print("--test--")
    return 1 * 2


if __name__ == "__main__":
    test()

執(zhí)行結(jié)果如下:

"""
--out11--
--out12--
--out21--
--out22--
--in21--
--in11--
--test--
--in12--
--in22--
"""

執(zhí)行順序以圖片形式展示如下:

先進(jìn)入離test函數(shù)最近的裝飾器,由于裝飾器中返回的是函數(shù)的函數(shù)名引用,并非真正調(diào)用函數(shù),所以先打印:

--out11--
--out12--
--out21--
--out22--

到inner2后,func會真正執(zhí)行函數(shù),會調(diào)用inner1(),所以再打印:

--in21--
--in11--

到inner1中,func會調(diào)用test函數(shù),所以會打印:

--test--

再從各個函數(shù)出來后,會依次打印:

--in12--
--in22--

合起來就是上面的執(zhí)行結(jié)果。

以上就是裝飾器的執(zhí)行順序,如有錯誤,歡迎交流指正!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42583.html

相關(guān)文章

  • python 多個裝飾器的調(diào)用順序

    摘要:如果不使用裝飾器的話,普通的做法可能是在中寫一堆校驗代碼來判斷用戶是否登錄,然后決定后面的執(zhí)行邏輯,這樣比較麻煩。 前言 裝飾器是程序開發(fā)中經(jīng)常會用到的一個功能,也是python語言開發(fā)的基礎(chǔ)知識,如果能夠在程序中合理的使用裝飾器,不僅可以提高開發(fā)效率,而且可以讓寫的代碼看上去顯的高大上^_^ 使用場景 可以用到裝飾器的地方有很多,簡單的舉例如以下場景 引入日志 函數(shù)執(zhí)行時間統(tǒng)計 執(zhí)...

    wapeyang 評論0 收藏0
  • Python】一文弄懂python裝飾器(附源碼例子)

    摘要:裝飾器的使用符合了面向?qū)ο缶幊痰拈_放封閉原則。三簡單的裝飾器基于上面的函數(shù)執(zhí)行時間的需求,我們就手寫一個簡單的裝飾器進(jìn)行實現(xiàn)。函數(shù)體就是要實現(xiàn)裝飾器的內(nèi)容。類裝飾器的實現(xiàn)是調(diào)用了類里面的函數(shù)。類裝飾器的寫法比我們裝飾器函數(shù)的寫法更加簡單。 目錄 前言 一、什么是裝飾器 二、為什么要用裝飾器 ...

    liuchengxu 評論0 收藏0
  • Python - 裝飾器decorator

    摘要:在這種代碼運行期間動態(tài)增加功能的方式,稱之為裝飾器。四接收特定類型參數(shù)的裝飾器裝飾器可以接收參數(shù),當(dāng)調(diào)用裝飾器返回的函數(shù)時,也就調(diào)用了包裹函數(shù),把參數(shù)傳入包裹函數(shù),它將參數(shù)傳遞給被裝飾的函數(shù)。執(zhí)行結(jié)果執(zhí)行結(jié)果 【題外話】心塞塞 心情down down down 有段時間沒用裝飾器了,然后然后問著就跪了~~~回來翻了翻資料和代碼...... 一、什么是裝飾器 裝飾器,decor...

    HackerShell 評論0 收藏0
  • Python裝飾器-裝飾流程,執(zhí)行順序

    摘要:最近看到一個關(guān)于的題文章其中的一個是裝飾器的順序問題就想寫篇博客回顧下裝飾器首先強(qiáng)烈推薦很久之前看的一篇博文翻譯理解中的裝飾器關(guān)于什么是裝飾器看這篇文章就好了這里主要想寫關(guān)于多個裝飾器的執(zhí)行流程裝飾順序示例代碼初始化初始化輸出結(jié)果初始化初始 最近看到一個關(guān)于Flask的CTF(RealWorld CTF 2018 web題bookhub)文章其中的一個trick是裝飾器的順序問題,就想...

    cpupro 評論0 收藏0
  • Python 函數(shù)式編程、裝飾器以及一些相關(guān)概念簡介

    摘要:重寫內(nèi)建名字空間中的函數(shù)閉包閉包是詞法閉包的簡稱。另一種說法認(rèn)為閉包是由函數(shù)和與其相關(guān)的引用環(huán)境組合而成的實體。 Python 中的 Decorator(裝飾器) 是對一個函數(shù)或者方法的封裝,從而使其可以完成一些與自身功能無關(guān)的工作。 預(yù)備知識 一切皆對象 在 Python 中,所有的一切都被視為對象,任何的變量、函數(shù)、類等都是 object 的子類。因此除了變量之外,函數(shù)和類等也可以...

    Jinkey 評論0 收藏0

發(fā)表評論

0條評論

or0fun

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<