[英]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.