我最近閱讀了有關 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
該代碼非常無用,它可以很容易地被生成器替換,但我想知道我是否應該在我的專案中使用這種技術。做這樣的事情有什么隱藏的警告嗎?
我讀過一些類似的問題,但我所看到的只是關于這件事如何是設計缺陷的持續爭論。所以我想得到一個明確的答案:我應該使用它,還是不應該使用它,為什么?
uj5u.com熱心網友回復:
主要的警告是,稍后閱讀您的代碼的人,除非他們熟悉這個特定的陷阱,否則可能不理解它的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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404912.html
標籤:
上一篇:從URL串列下載文本檔案
