欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python中裝飾器是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹了python中裝飾器是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了耀州免費建站歡迎大家使用!

合理使用裝飾器可以簡化開發(fā),并且使得代碼更加清晰。下面我們分別介紹兩種裝飾器,不帶參數(shù)的裝飾器和帶參數(shù)的裝飾器。

一、不帶參數(shù)的裝飾器

我們用一個實際的例子來引入裝飾器的概念,比如我們現(xiàn)在有一個方法A(),然后我們需要在方法A()執(zhí)行之前在終端打印"function is running",這時候我們可以在方法A()的開始部分加上下面的代碼:

print("function is running")

但是如果我們不想修改方法A()的代碼,也可以重新寫一個方法decorator(),然后把A()作為入?yún)?,代碼如下:

def decorator(fun):
    @functools.wraps(fun)
    def wrapper(*args, **kwargs):
        print("Method is running")
        return fun()
    return wrapper

python中的方法可以作為參數(shù)傳入另一個方法,所以當我們執(zhí)行decorator(A)的時候,返回的是一個方法,這個方法的本質(zhì)是先執(zhí)行print語句,然后再執(zhí)行A()。

但是這樣我們的調(diào)用代碼就需要進行修改,也就是說之前調(diào)用方法A(),現(xiàn)在的寫法是調(diào)用decorator(A)(),為了不影響調(diào)用的代碼,我們使用python的語法糖改造方法A()的代碼。

@decorator
def A():
    # do something

實際上只是在A()的前面加上一行@decorator,這樣在我們的調(diào)用代碼就不需要改變了。

裝飾器中的@functools.wraps(fun)是為了保證返回的方法__name__屬性和入?yún)⒎椒╢un的__name__屬性相同。

二、帶入?yún)⒌难b飾器

在上面不帶參數(shù)的裝飾器中,我們實現(xiàn)了在執(zhí)行方法A()之前打印一行固定的字符串,如果我們想要打印不同的字符串就需要用帶參數(shù)的裝飾器。實際上就是在不帶參數(shù)的裝飾器上再封裝一層即可,代碼如下:

def decorator_par(name):
    def decorator(fun):
        @functools.wraps(fun)
        def wrapper(*args, **kwargs):
            print("Method {} is running".format(name))
            return fun()
        return wrapper
    return decorator

這樣我們就可以在使用裝飾器的時候設置參數(shù)name,實現(xiàn)打印不同的信息。完整的代碼如下:

import functools
 
def decorator_par(name):
    def decorator(fun):
        @functools.wraps(fun)
        def wrapper(*args, **kwargs):
            print("Method {} is running".format(name))
            return fun()
        return wrapper
    return decorator
 
@decorator_par("A")
def A():
    print("I am A")
 
@decorator_par("B")
def B():
    print("I am B")
 
A()
B()

執(zhí)行輸出為:

Method A is running
I am A
Method B is running
I am B

可以看到我們在不改變方法調(diào)用代碼的情況下,實現(xiàn)了在該方法之前打印特定的信息。

感謝你能夠認真閱讀完這篇文章,希望小編分享python中裝飾器是什么內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!

分享題目:python中裝飾器是什么-創(chuàng)新互聯(lián)
URL標題:http://chinadenli.net/article8/depiop.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、關鍵詞優(yōu)化標簽優(yōu)化、建站公司、網(wǎng)站設計、自適應網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
日韩一区二区三区久久| 欧美精品在线播放一区二区| 国产激情国产精品久久源| 国产真人无遮挡免费视频一区| 97人妻精品一区二区三区男同| 91日韩在线观看你懂的| 日本熟妇熟女久久综合| 国产精品午夜性色视频| 果冻传媒在线观看免费高清| 国产又猛又黄又粗又爽无遮挡| 欧美多人疯狂性战派对| 观看日韩精品在线视频| 在线观看中文字幕91| 午夜国产精品福利在线观看| 国产成人午夜福利片片| 少妇人妻精品一区二区三区| 91日韩在线视频观看| 女人精品内射国产99| 免费啪视频免费欧美亚洲| 成人日韩在线播放视频| 少妇特黄av一区二区三区| 日韩一级欧美一级久久| 精品欧美日韩一区二区三区 | 高清不卡一卡二卡区在线| 激情五月综五月综合网| 超薄丝袜足一区二区三区| 欧美一区二区不卡专区| 草草草草在线观看视频| 九九热国产这里只有精品| 欧美日韩免费黄片观看| 激情少妇一区二区三区| 日本精品理论在线观看| 青青操在线视频精品视频| 极品少妇一区二区三区精品视频 | 国产91麻豆精品成人区| 91人妻丝袜一区二区三区| 免费亚洲黄色在线观看| 日本久久中文字幕免费| 日本高清加勒比免费在线| 欧美一区二区三区不卡高清视| 亚洲高清一区二区高清|