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