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

資訊專欄INFORMATION COLUMN

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

qingshanli1988 / 3365人閱讀

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

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

問(wèn)題:當(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來(lái)初始化, 以后的使用都不會(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/37846.html

相關(guān)文章

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

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

    jsliang 評(píng)論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í)才有閉包問(wèn)題。如果想保留函數(shù)原本的屬性,可以使用標(biāo)準(zhǔn)庫(kù)中的裝飾器。 《流暢的Python》筆記本篇將從最簡(jiǎn)單的裝飾器開(kāi)始,逐漸深入到閉包的概念,然后實(shí)現(xiàn)參數(shù)化裝飾器,最后介紹標(biāo)準(zhǔn)庫(kù)中常用的裝飾器。 1. 初步認(rèn)識(shí)裝飾器 函數(shù)裝飾...

    sunny5541 評(píng)論0 收藏0
  • python裝飾案例

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

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

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

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

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

    frolc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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