成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python裝飾器刷新函數(shù)default參數(shù)

qingshanli1988 / 3390人閱讀

摘要:關(guān)于函數(shù)默認(rèn)參數(shù)為等容器的不刷新問題當(dāng)我們這樣寫函數(shù)結(jié)果我們會(huì)發(fā)現(xiàn)函數(shù)只是會(huì)在函數(shù)定義的時(shí)候,會(huì)利用來初始化,以后的使用都不會(huì)再次初始化這個(gè)函數(shù)解決利用裝飾器,每次調(diào)用默認(rèn)參數(shù)列表內(nèi)容,而非引用結(jié)果補(bǔ)充這里函數(shù)定義之后,解釋器會(huì)去掃描這些定

關(guān)于函數(shù)默認(rèn)參數(shù)為{}等容器的不刷新

問題:當(dāng)我們這樣寫函數(shù):

def append_item(a = 1, b = []):
    b.append(a)
    print b

append_item(a = 2)
append_item(a = 3)    

結(jié)果:

[2]
[2, 3]

我們會(huì)發(fā)現(xiàn)函數(shù)只是會(huì)在函數(shù)定義的時(shí)候,會(huì)利用default來初始化, 以后的使用都不會(huì)再次初始化這個(gè)函數(shù)

解決:

利用裝飾器,每次調(diào)用deepcopy默認(rèn)參數(shù)列表
import copy
def flush(f):
    function_args_default = f.func_defaults
    def wrapper(*args, **kwargs):
        f.func_defaults = copy.deepcopy(function_args_default) #deepcopy內(nèi)容,而非copy引用
        return f(*args, **kwargs)
    return wrapper
    
append_item_copy(a = 2)
append_item_copy(a = 3)

結(jié)果:

[2]
[3]

補(bǔ)充:

這里函數(shù)定義之后, python解釋器會(huì)去掃描這些定義, 之后不會(huì)有這些初始化。    

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37846.html

相關(guān)文章

  • python學(xué)習(xí)筆記 函數(shù)裝飾

    摘要:實(shí)現(xiàn)一個(gè)簡單的裝飾器輸出被裝飾函數(shù)的運(yùn)行時(shí)間簡單運(yùn)用運(yùn)行結(jié)果運(yùn)行過程中,首先輸出裝飾器函數(shù)中的內(nèi)容被裝飾函數(shù)運(yùn)行時(shí)間長度函數(shù)名稱和實(shí)際參數(shù)計(jì)算結(jié)果然后得到最終的計(jì)算結(jié)果。 函數(shù)裝飾器 函數(shù)裝飾器用于在源碼中標(biāo)記函數(shù), 以某種方式增強(qiáng)函數(shù)的行為,這是一個(gè)強(qiáng)大的功能。 函數(shù)裝飾器是一個(gè)可調(diào)用對象,其參數(shù)是另外一個(gè)函數(shù),即被裝飾函數(shù)。裝飾器可能處理被裝飾函數(shù),然后將其返回,或者將其替換成另一...

    jsliang 評論0 收藏0
  • Python學(xué)習(xí)之路26-函數(shù)裝飾和閉包

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

    sunny5541 評論0 收藏0
  • python裝飾案例

    摘要:普通裝飾器函數(shù)計(jì)算函數(shù)的運(yùn)行時(shí)間黑名單過濾測試網(wǎng)絡(luò)請求的響應(yīng)時(shí)間初始裝飾閉包函數(shù)判斷的路徑是否存在,如果不存在,則追加已取消下載此已在黑名單中獲取開始請求的時(shí)間執(zhí)行時(shí)間返回一個(gè)包裝函數(shù)包裝被裝飾函數(shù)的參數(shù)列表開始 普通裝飾器函數(shù) 計(jì)算函數(shù)的運(yùn)行時(shí)間 import requests import time import re # 黑名單 filter_urls = [www.hao12...

    張利勇 評論0 收藏0
  • 流暢的python讀書筆記-第七章-函數(shù)裝飾和閉包

    摘要:函數(shù)裝飾器和閉包嚴(yán)格來說,裝飾器只是語法糖。何時(shí)執(zhí)行裝飾器它們在被裝飾的函數(shù)定義之后立即運(yùn)行。裝飾器突出了被裝飾的函數(shù)的作用,還便于臨時(shí)禁用某個(gè)促銷策略只需把裝飾器注釋掉。 函數(shù)裝飾器和閉包 嚴(yán)格來說,裝飾器只是語法糖。如前所示,裝飾器可以像常規(guī)的可調(diào)用對象那樣調(diào)用,其參數(shù)是另一個(gè)函數(shù)。有時(shí),這樣做更方便,尤其是做元編程(在運(yùn)行時(shí)改變程序的行為)時(shí)。 Python何時(shí)執(zhí)行裝飾器 它們在...

    Hydrogen 評論0 收藏0
  • Python 裝飾執(zhí)行順序迷思

    摘要:探究多個(gè)裝飾器執(zhí)行順序裝飾器是用于封裝函數(shù)或代碼的工具,網(wǎng)上可以搜到很多文章可以學(xué)習(xí),我在這里要討論的是多個(gè)裝飾器執(zhí)行順序的一個(gè)迷思。這時(shí)候你該知道為什么輸出結(jié)果會(huì)是那樣,以及對裝飾器執(zhí)行順序?qū)嶋H發(fā)生了什么有一定了解了吧。 探究多個(gè)裝飾器執(zhí)行順序 裝飾器是Python用于封裝函數(shù)或代碼的工具,網(wǎng)上可以搜到很多文章可以學(xué)習(xí),我在這里要討論的是多個(gè)裝飾器執(zhí)行順序的一個(gè)迷思。 疑問 大部...

    frolc 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<