多くの人がデフォルトのパラメータを受け取るPythonの関数を見たことがあると思います。例えば:
def foo(a=[]):
a.append(3)
return a
foo()を使用してこの関数を呼び出すと、出力は呼び出し後に毎回整数「3」を追加します。
この関数を定義すると、現在の環境で「foo」という名前の関数オブジェクトが定義され、この時点でデフォルトのパラメータ値も評価されます。パラメータなしで関数が呼び出されるたびに、評価されたパラメータ値がコードに従って変更されます。
私の質問は、この評価されたパラメータはどこにあるのかということです。 関数を呼び出すとき、それは関数オブジェクトにありますか、それともメソッドオブジェクトにありますか? Pythonのすべてがオブジェクトであるため、'a'->evaluatedパラメーターのname->valueバインディングを保持する場所が必要です。私はこの問題を考えすぎていますか?