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

Python的閉包和裝飾器你真的了解嗎

 更新時間:2022年02月14日 08:58:09   作者:尤諾.  
這篇文章主要為大家詳細(xì)介紹了Python的閉包和裝飾器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

閉包

閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。

def test1(k, b):
    def test1_1(x):
        print(k*x+b)
    return test1_1
t1 = test1(1, 2)
t1(0)
t1(1)
t1(2)

閉包中修改數(shù)據(jù)

x = 300
def test1():
    x = 200
    def test2():
        nonlocal x
        print("----1----x = {}".format(x))
        x = 100
        print("----2----x = {}".format(x))
    return test2
t1 = test1()
t1()

裝飾器

實(shí)現(xiàn)對無參數(shù)函數(shù)的裝飾器

def set_func(func):
    def call_func():
        print("裝飾器執(zhí)行")
        func()
    return call_func
@set_func   # 等價于sumNum = set_func(sumNum)
def sumNum():
    print("sumNum")
sumNum()

實(shí)現(xiàn)對有參數(shù)函數(shù)的裝飾器

# 對有參數(shù)、無返回值的函數(shù)進(jìn)行裝飾
def set_func(func):
    def call_func(num):
        print("裝飾器")
        func(num)
    return call_func
@set_func
def sumNum(num):
    print("sumNum = {}".format(num))
sumNum(100)

對不定長參數(shù)的函數(shù)進(jìn)行裝飾

def set_func(func):
    def call_func(*args, **kwargs):
        print("裝飾器")
        func(*args, **kwargs)  # 拆包
    return call_func
@set_func
def sumNum(num, *args, **kwargs):
    print("sumNum = {}".format(num))
    print("args = {}".format(args))
    print("kwargs = {}".format(kwargs))
sumNum(100, 200, c=100)

對有返回值的函數(shù)進(jìn)行裝飾

def set_func(func):
    def call_func(*args, **kwargs):
        print("裝飾器")
        return func(*args, **kwargs)  # 拆包
    return call_func
@set_func
def sumNum(num, *args, **kwargs):
    print("sumNum = {}".format(num))
    print("args = {}".format(args))
    print("kwargs = {}".format(kwargs))
    return "200 ok"
sumNum(100, 200, c=100)

多個裝飾器對同一個函數(shù)裝飾

def add_h1(func):
    def h1():
        h1_str = "<h1>" + func() + "</h1>"
        return h1_str
    return h1

def add_a(func):
    def call_func():
    	a_str = "<a>" + func() + "</a>"
        return a_str
    return call_func

@add_h1
@add_a
def get_str():
    return "haha"
get_str()

輸出為:<h1><a>haha</a></h1>

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!   

相關(guān)文章

  • 詳解如何創(chuàng)建Python元類

    詳解如何創(chuàng)建Python元類

    通過本文,將深入討論P(yáng)ython元類,其屬性,如何以及何時在Python中使用元類。
    2021-05-05
  • Python中用startswith()函數(shù)判斷字符串開頭的教程

    Python中用startswith()函數(shù)判斷字符串開頭的教程

    這篇文章主要介紹了Python中用startswith()函數(shù)判斷字符串開頭的教程,startswith()函數(shù)的使用是Python學(xué)習(xí)中的基礎(chǔ)知識,本文列舉了一些不同情況下的使用結(jié)果,需要的朋友可以參考下
    2015-04-04
  • 跟老齊學(xué)Python之網(wǎng)站的結(jié)構(gòu)

    跟老齊學(xué)Python之網(wǎng)站的結(jié)構(gòu)

    本教程的最終目的就是教會大家如何使用Python制作網(wǎng)站,非常的詳盡,需要的朋友可以參考下
    2014-10-10
  • python實(shí)現(xiàn)網(wǎng)上購物系統(tǒng)

    python實(shí)現(xiàn)網(wǎng)上購物系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)上購物系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • PyCharm搭建Spark開發(fā)環(huán)境的實(shí)現(xiàn)步驟

    PyCharm搭建Spark開發(fā)環(huán)境的實(shí)現(xiàn)步驟

    這篇文章主要介紹了PyCharm搭建Spark開發(fā)環(huán)境的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 分析語音數(shù)據(jù)增強(qiáng)及python實(shí)現(xiàn)

    分析語音數(shù)據(jù)增強(qiáng)及python實(shí)現(xiàn)

    數(shù)據(jù)增強(qiáng)是一種生成合成數(shù)據(jù)的方法,即通過調(diào)整原始樣本來創(chuàng)建新樣本。這樣我們就可獲得大量的數(shù)據(jù)。這不僅增加了數(shù)據(jù)集的大小,還提供了單個樣本的多個變體,這有助于我們的機(jī)器學(xué)習(xí)模型避免過度擬合
    2021-06-06
  • pandas.str.replace 不起作用的解決方法

    pandas.str.replace 不起作用的解決方法

    最近做項目,涉及到字符串替換,所以直接想到的方法是用?pandas.Series.str.replace?來進(jìn)行替換,本文主要介紹了pandas.str.replace 不起作用的解決方法,感興趣的可以了解一下
    2024-03-03
  • Python操作Excel數(shù)據(jù)的封裝函數(shù)分享

    Python操作Excel數(shù)據(jù)的封裝函數(shù)分享

    對比其它編程語言,我們都知道Python最大的優(yōu)勢是代碼簡單,有豐富的第三方開源庫供開發(fā)者使用。而對于數(shù)據(jù)的讀取和存儲,對于普通人來講,除了數(shù)據(jù)庫之外,最常見的就是微軟的Excel。本文為大家準(zhǔn)備了Python操作Excel數(shù)據(jù)的封裝函數(shù),希望對大家有所幫助
    2022-11-11
  • python調(diào)用有道智云API實(shí)現(xiàn)文件批量翻譯

    python調(diào)用有道智云API實(shí)現(xiàn)文件批量翻譯

    這篇文章主要介紹了python如何調(diào)用有道智云API實(shí)現(xiàn)文件批量翻譯,幫助大家更好得理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • Python urllib3軟件包的使用說明

    Python urllib3軟件包的使用說明

    這篇文章主要介紹了Python urllib3軟件包的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論

临朐县| 岑溪市| 托里县| 武鸣县| 阿荣旗| 应城市| 微博| 济阳县| 神木县| 抚远县| 泰宁县| 石渠县| 福贡县| 吉木乃县| 沙河市| 凌源市| 麦盖提县| 新乐市| 裕民县| 延津县| 建平县| 盐津县| 麟游县| 柘城县| 凌源市| 洛隆县| 仙桃市| 瓦房店市| 平谷区| 绥江县| 永嘉县| 玛多县| 建宁县| 盈江县| 响水县| 西林县| 尼勒克县| 青冈县| 灵宝市| 甘孜县| 绥化市|