0
可能性の重複:
“Least Astonishment” in Python: The Mutable Default ArgumentPython 2.7のバグや誤解?
私はここで何かをしないのですかこれは本当にバグですか?以下は、例えばタプル仕様から多次元リストを生成する再帰関数です。
dim((2,3))
returns
[[[],[],[]],[[],[],[]]]
唯一の問題は、([]、(2,3))私は、デフォルトのパラメータなしでそれを呼び出す場合、私は薄暗いのようなデフォルトのパラメータを指定した場合、それは、リストに私はそれを呼び出すたびに追加していることです、それはいいです。各呼び出しのデフォルトパラメータの状態を保存しています!私がやっていることで誰も問題が見つからない場合、私はpythonのバグ報告者にそれを入力します。
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])
正確です。しかし、ニックピックには、シングルトン(最も顕著な、もちろん、 'None')との比較には' 'is ''が優先されます。' '/もしc == None/cがNone /'ならば。 – delnan