亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

qingshanli1988 / 3425人閱讀

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

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

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

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

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

結(jié)果:

[2]
[2, 3]

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

解決:

利用裝飾器,每次調(diào)用deepcopy默認參數(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]

補充:

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    frolc 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<