0
可能重複:
「Least Astonishment」 in Python: The Mutable Default ArgumentPython 2.7中的錯誤或誤解?
我失去了一些東西在這裏還是這真的是一個錯誤?例如,下面是一個遞歸函數,它根據元組規範生成多維列表。
dim((2,3))
returns
[[[],[],[]],[[],[],[]]]
唯一的問題是,它每一次我稱呼它,如果我把它叫做沒有默認參數,如果我指定喜歡昏暗的默認參數添加到列表((2,3),[]) ,那很好。它保存每次調用的默認參數的狀態!如果沒有人能找到我在做什麼的問題,我會將它輸入到python bug記者。
cdr = lambda l : l[1:]
car = lambda l : l[0]
last = lambda x : x[-1:][0]
def dim(t, c = []):
if len(t) > 0:
i = car(t)
for j in range(i):
c.append([])
dim(cdr(t), last(c))
return c
print dim([2,3])
print dim([2,3])
print dim([2,3])
print dim([2,3])
沒問題。但是對於挑選,'is'是用於與單身人士比較(最顯着的,當然是「無」)的優選方式 - 即's/if c == None/if c is None /'。 – delnan 2011-05-09 15:29:13