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

資訊專欄INFORMATION COLUMN

python裝飾器

TigerChain / 2267人閱讀

摘要:首先要搞清楚什么是裝飾器簡單來說,可以把裝飾器理解為一個包裝函數的函數,在函數運行時增加功能但不影響這個函數原有內容,還可以進行函數執行后的清理工作。

原文地址

https:nolon.xyz

在學習python過程中,相信大家對裝飾器的概念很模糊,我也是困惑了很久,決定寫一篇文章梳理一下。
首先要搞清楚什么是裝飾器:

簡單來說,可以把裝飾器理解為一個包裝函數的函數,在函數運行時增加功能但不影響這個函數原有內容,還可以進行函數執行后的清理工作。

舉一個小例子

@func1
def func2():
    pass

裝飾器做的事情就是func1(func2) 傳遞了一個函數對象到我們的裝飾器里面然后先執行裝飾器func1其中的內容,然后再執行函數func2

比如舉一個普通裝飾器的例子

#普通裝飾器
def func1(func):
    def add_func():
        print("這是我要添加的功能")
        return func()
    return add_func

@func1
def func2():
    print("hello world")

#func1裝飾器函數
#func2被裝飾的函數
>>>func2()
這是我要添加的功能
hello world

在這段代碼中func2()相當于func1(func2)()->add_func(),再想要執行func2()函數時,先執行裝飾器func1()函數,并且參數func相當于func2()。執行func1函數時由于返回值是add_func,我們執行的是func1(func2)(),也就相當于執行add_func(),輸出
"這是我添加的功能",返回一個func()函數,也就是參數func的調用,即對應的func2函數的調用。

裝飾器的基本框架
def func1(func):
    def func2():

        return func()
    return func1()
進階

來一個帶參數的裝飾器吧

def func1(func):
    def func2(a,b):
        a=1
        b=2
        return func(a,b)
    return func()
@func1
def func(x,y)
    print("this is a add func")
    print(x+y)

>>>func(10,20)
this is a add func
3

自這段代碼中被裝飾函數的參數傳遞到裝飾函數的變量中,也就是x傳遞給了a,y傳遞給了b,return func(a,b)即調用了func函數并且函數的參數為ab。

再高級一點的 裝飾器函數帶參數 (哈哈,是不是感覺有點懵了)

def arg_func(arg):
    def _func(func):
        def _func1():
            if arg=="good":
                print("出去玩")
            if arg=="bad":
                print("不出去玩")
            return func()
        return _func1
    return _func

@arg_func("bad")
def func():
    print("bad day")
@arg_func("good")
def func1()
    print("good day")

>>>func()
不出去玩
bad day
>>>func1()
出去玩
good day

這段代碼其實很簡單,就是裝飾器多了一個參數用來判斷,看上去也很好理解。同樣,執行func裝飾器接收函數(arg_func)的參數是bad,執行func1函數,裝飾器接收函數的參數是good

好了,到這里,裝飾器的內容基本上就梳理完了,肯定還有不全的地方或者不好的地方,希望小伙伴們可以多多完善,有需要補充的或者需要改正的在下面留言告訴我哦 ( ?? ω ?? )y!

文章地址:

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42852.html

相關文章

  • Python】一文弄懂python裝飾(附源碼例子)

    摘要:裝飾器的使用符合了面向對象編程的開放封閉原則。三簡單的裝飾器基于上面的函數執行時間的需求,我們就手寫一個簡單的裝飾器進行實現。函數體就是要實現裝飾器的內容。類裝飾器的實現是調用了類里面的函數。類裝飾器的寫法比我們裝飾器函數的寫法更加簡單。 目錄 前言 一、什么是裝飾器 二、為什么要用裝飾器 ...

    liuchengxu 評論0 收藏0
  • Python裝飾vs裝飾模式

    摘要:希望引以為戒鄭傳裝飾模式如果你了解,你肯定聽過裝飾器模式。在面向對象中,裝飾模式指動態地給一個對象添加一些額外的職責。就增加一些功能來說,裝飾模式比生成子類更為靈活。 漫談 如果作為一個Python入門,不了解Python裝飾器也沒什么,但是如果作為一個中級Python開發人員,如果再不對python裝飾器熟稔于心的話,那么可能并沒有量變積累到質變。 我以前也看過很多講python 裝...

    stackvoid 評論0 收藏0
  • Python: 會打扮的裝飾

    摘要:一般情況下,我們使用裝飾器提供的語法糖,來簡化上面的寫法像上面的情況,可以動態修改函數或類功能的函數就是裝飾器。本文標題為會打扮的裝飾器本文鏈接為參考資料修飾器的函數式編程中的裝飾器介紹思誠之道裝飾器入門與提高賴明星 裝飾器 我們知道,在 Python 中,我們可以像使用變量一樣使用函數: 函數可以被賦值給其他變量 函數可以被刪除 可以在函數里面再定義函數 函數可以作為參數傳遞給另外...

    blastz 評論0 收藏0
  • Python裝飾

    摘要:一引用書流暢的書二基本概念問題裝飾器是什么解答嚴格來說,裝飾器只是語法糖,裝飾器是可調用的對象,可以像常規的可調用對象那樣調用,特殊的地方是裝飾器的參數是一個函數問題裝飾器有什么特性解答裝飾器有個特性,一是可以把被裝飾的函數替換成其他函數, 一, 引用 [書] 流暢的Python [書] Effective Python 二, 基本概念 showImg(https://segme...

    aisuhua 評論0 收藏0
  • Python學習之路26-函數裝飾和閉包

    摘要:初步認識裝飾器函數裝飾器用于在源代碼中標記函數,以某種方式增強函數的行為。函數裝飾器在導入模塊時立即執行,而被裝飾的函數只在明確調用時運行。只有涉及嵌套函數時才有閉包問題。如果想保留函數原本的屬性,可以使用標準庫中的裝飾器。 《流暢的Python》筆記本篇將從最簡單的裝飾器開始,逐漸深入到閉包的概念,然后實現參數化裝飾器,最后介紹標準庫中常用的裝飾器。 1. 初步認識裝飾器 函數裝飾...

    sunny5541 評論0 收藏0
  • Python中的函數裝飾和閉包

    摘要:變量查找規則在中一個變量的查找順序是局部環境,閉包,全局,內建閉包引用了自由變量的函數。閉包的作用閉包的最大特點是可以將父函數的變量與內部函數綁定,并返回綁定變量后的函數,此時即便生成閉包的環境父函數已經釋放,閉包仍然存在。 導語:本文章記錄了本人在學習Python基礎之函數篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、掌握裝飾器的本質、功...

    caozhijian 評論0 收藏0

發表評論

0條評論

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