私はhttps://docs.python.org/3.5/tutorial/controlflow.html#default-argument-valuesを経由していました。私はPythonのドキュメントから理解何ごとに、Python - 関数へのデフォルト引数の変更
[6, 7, 1]
[4, 5, 2]
[4, 5, 2, 3]
今:
x = [4,5]
def f(a, L=x):
L.append(a)
return L
x = [8,9]
print(f(1,[6,7]))
print(f(2))
print(f(3))
私が得た出力だった:私はそこに一例として以下を少し修正
デフォルト値は定義スコープの関数定義のポイントで評価されます。したがって、L = [4,5]
f()の最初の呼び出しの後、L = [6,7,1]。これは問題ありません。
f()の2回目の呼び出し後に出力されないものは出力されます。 Lの値がf()への呼び出しの間で共有される場合、2番目の関数呼び出しの後の出力は[6,7,1,2]でなければなりません。 Lの値は、f()への2回目と3回目の呼び出しで共有されますが、1回目と2回目の呼び出しの間では共有されませんでした。
その場合、f()の3番目の呼び出しの出力は[4,5,3]になるはずですか?また、Pyhtonのドキュメントでは、「デフォルト値は1回だけ評価されます」と述べています。 –