簡體   English   中英

在 Python 中的函數中使用可變類型作為默認參數是否有注意事項?

[英]Are there caveats of using mutable types as default parameters in functions in Python?

我最近在 Python 中閱讀了有關可變默認參數的信息。 出於某種原因,我想出了一個像這樣使用它的想法:

data = [3, 4, 1, 8, 5, 9, 2, 6, 7]


def get_min(checked=[]):
    global data

    mn = min((x for x in data if x not in checked))
    checked.append(mn)

    return mn

該代碼非常無用,它可以很容易地被生成器替換,但我想知道我是否應該在我的項目中使用這種技術。 做這樣的事情有什么隱藏的警告嗎?

我讀過一些類似的問題,但我所看到的只是關於這件事是如何成為設計缺陷的 arguments。 所以我想得到一個明確的答案:我應該使用它,還是不應該使用它,為什么?

主要的警告是,稍后閱讀您的代碼的人,除非他們熟悉這個特定的陷阱,否則可能不理解checked的持續存在。 假設您想避免使用生成器,那么編寫如下內容會更清楚:

data = [3, 4, 1, 8, 5, 9, 2, 6, 7]
checked = []

def get_min():
    mn = min(x for x in data if x not in checked)
    checked.append(mn)
    return mn

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM