-1

次のコードを確認してください。

def f(x, myList = []):
    myList.append(x)
    return myList

f(6)

[6]を返します

その間

へ(7)

[6, 7] を返します

私の質問は、値が指定されていないときにデフォルトの myList 値を使用しない理由です。

一方、このコードは正常に動作します

def f(x, myList = None):
if myList == None:
    # This WILL allocate a new list on every call to the function.
    myList = []
myList.append(x)
return myList

f(6)

[6]を返します

へ(7)

[7]を返します

後者の場合はデフォルトの引数値を取るのに、前者の場合は取らないのはなぜですか?

4

1 に答える 1

0

デフォルトの引数は、関数を定義する時点での init です。したがって、可変型の値の場合、関数呼び出しは同じ変数を共有します。Why are default values shared between objectsを参照できます。

于 2013-07-27T14:33:14.413 に答える