Python のデフォルト値の概念は、可変オブジェクトまたは不変オブジェクトの使用に基づいています。プログラミングの実践では、変更可能なオブジェクトをデフォルト値として使用しないことが最善です。問題を避けるために、代わりにデフォルト値として None を使用してください。数値、文字列、タプル、None などの不変オブジェクトは変化しません。辞書、リスト、クラス インスタンスなどの変更可能なオブジェクトの場合、変更により混乱が生じる可能性があります。
関数内の辞書の例と、その問題点とその修正方法を見てみましょう。
###質問###私たちは多くの場合、関数呼び出しでデフォルト値を持つ新しいオブジェクトを作成することを期待します。しかし、そうではありません。デフォルト値は関数の定義時に一度だけ作成されます。上記の辞書の例のように、オブジェクトが変更された場合、後続の関数呼び出しでは変更されたオブジェクトが参照されます。
###解決###可変オブジェクトをデフォルト値として使用する問題を解決するには、次のようにします -
リーリー計算負荷の高い関数がある場合、1 つの手法は、関数の呼び出しごとに引数と結果の値をキャッシュし、同じ値が再度要求されたときにキャッシュされた値を返すことです。
これはメモ化と呼ばれ、次のようにして実現できます -
リーリー以下は結果をキャッシュに保存します -
ああああ以上がPython のオブジェクト間でデフォルト値が共有されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。