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

Python裝飾器詳細(xì)介紹

 更新時(shí)間:2022年12月21日 17:20:00   作者:ZYM66  
這篇文章主要介紹了Python @property裝飾器的用法,在Python中,可以通過@property裝飾器將一個(gè)方法轉(zhuǎn)換為屬性,從而實(shí)現(xiàn)用于計(jì)算的屬性,下面文章圍繞主題展開更多相關(guān)詳情,感興趣的小伙伴可以參考一下

說在前邊

裝飾器作為Python中的一個(gè)比較實(shí)用的東西,在我們?nèi)粘斓氖褂眠^程中經(jīng)常使用。但是其細(xì)節(jié)問題我們卻常常忘記考慮,本文章就此問題寫建裝飾器代碼來進(jìn)行一步一步分析。

裝飾器實(shí)驗(yàn)

1.我們常見的裝飾器使用方式

from functools import wraps
def test_wrapper(func):
    @wraps(func)
    def inner_wrapper():
        print("Use inner_wrapper")
        func()
    return inner_wrapper
@test_wrapper
def func2():
    print("Use func2") 

2.裝飾器可以進(jìn)一步簡化,留下最重要的部分

def test_wrapper2(func):
    def inner_wrapper():
        pass
    return inner_wrapper
@test_wrapper2
def func3():
    pass

調(diào)用func3()發(fā)現(xiàn)輸出為空。

那我們便可以看出裝飾器的實(shí)際運(yùn)作方式

python解釋器會call這個(gè)被@的函數(shù)名稱,并向其中傳入被裝飾函數(shù)名稱,例

def A(func):
	pass
@A
def func():
	pass
func()
"""
就相當(dāng)于是
把func()的調(diào)用
換成了A(func)(),故這里A函數(shù)返回的一定是一個(gè)可以被調(diào)用(call)的函數(shù),否則會報(bào)錯(cuò)
"""

3.研究深入,向裝飾器中傳入值

from functools import wraps
# 在裝飾器中使用額外參數(shù)
def another_keyword(another_keyword=None):
    def test_func(func):
        @wraps(func)
        def func_wrapper():
            if another_keyword == 1:
                print("Use another_keyword")
            else:
                print("Not use another_keyword")
            print("Using func_wrapper")
            func()
        return func_wrapper
    return test_func
@another_keyword(another_keyword=1)
def func():
    print("Use func")

根據(jù)上方的分析,我們這次在調(diào)用func這個(gè)函數(shù)的時(shí)候就相當(dāng)于以下流程

another_keyword(another_keyword=1)(func)()

可能有點(diǎn)復(fù)雜,需要再進(jìn)行思考,不過接下來我們會使用一種更適合傳參的裝飾器

4.更加強(qiáng)大,用類實(shí)現(xiàn)裝飾器

from functools import wraps
class cls_wrapper(object):
    def __init__(self):
        pass
    def __call__(self, func):
        @wraps(func)
        def inner_wrapper():
            func()
        return inner_wrapper
@cls_wrapper()
def func4():
    print("Use func4")

在一個(gè)類中,我們定義了__call__方法,也就是說,這個(gè)類的實(shí)例可以像函數(shù)一樣被調(diào)用,我們只需要實(shí)例化這個(gè)類就可以當(dāng)做裝飾器使用了。

這樣做的好處是,我們在實(shí)例化類的時(shí)候,可以傳入初始化的參數(shù),就不用向上邊那樣對函數(shù)進(jìn)行層層閉包了。

到此這篇關(guān)于Python裝飾器詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Python裝飾器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Keras搭建孿生神經(jīng)網(wǎng)絡(luò)Siamese?network比較圖片相似性

    Keras搭建孿生神經(jīng)網(wǎng)絡(luò)Siamese?network比較圖片相似性

    這篇文章主要為大家介紹了Keras搭建孿生神經(jīng)網(wǎng)絡(luò)Siamese?network比較圖片相似性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 一行代碼生成Tableau可視化圖表的方法

    一行代碼生成Tableau可視化圖表的方法

    本文主要介紹了一行代碼生成Tableau可視化圖表的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • pytorch之torch_scatter.scatter_max()用法

    pytorch之torch_scatter.scatter_max()用法

    這篇文章主要介紹了pytorch之torch_scatter.scatter_max()用法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python使用Pandas庫實(shí)現(xiàn)MySQL數(shù)據(jù)庫讀寫

    Python使用Pandas庫實(shí)現(xiàn)MySQL數(shù)據(jù)庫讀寫

    本次分享將介紹如何在Python中使用Pandas庫實(shí)現(xiàn)MySQL數(shù)據(jù)庫的讀寫,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Python Color類與文字繪制零基礎(chǔ)掌握

    Python Color類與文字繪制零基礎(chǔ)掌握

    這篇文章主要介紹了Python Color類與文字繪制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 11個(gè)案例講透Python函數(shù)參數(shù)小結(jié)

    11個(gè)案例講透Python函數(shù)參數(shù)小結(jié)

    本文主要介紹了11個(gè)案例講透Python函數(shù)參數(shù)小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    python實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python3中多線程編程的隊(duì)列運(yùn)作示例

    Python3中多線程編程的隊(duì)列運(yùn)作示例

    這篇文章主要介紹了Python3中多線程編程的隊(duì)列運(yùn)作示例,文中用一個(gè)簡單的例子展示了Python下嘗試多線程時(shí)隊(duì)列的進(jìn)站出站是如何運(yùn)作的,需要的朋友可以參考下
    2015-04-04
  • 淺析python函數(shù)式編程

    淺析python函數(shù)式編程

    這篇文章主要介紹了python函數(shù)式編程的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • 基于python3+OpenCV實(shí)現(xiàn)人臉和眼睛識別

    基于python3+OpenCV實(shí)現(xiàn)人臉和眼睛識別

    這篇文章主要為大家詳細(xì)介紹了基于python3+OpenCV實(shí)現(xiàn)人臉和眼睛識別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論

施秉县| 宁远县| 怀仁县| 临泉县| 景泰县| 平凉市| 安国市| 达日县| 铜鼓县| 杭锦后旗| 阿坝县| 郯城县| 海林市| 惠来县| 老河口市| 无为县| 嘉黎县| 五常市| 西畴县| 五寨县| 遂川县| 珲春市| 忻州市| 五寨县| 宣武区| 长沙县| 台江县| 无棣县| 绩溪县| 德江县| 龙南县| 台安县| 武定县| 枣阳市| 洪湖市| 银川市| 珠海市| 龙海市| 互助| 岳池县| 通榆县|