上級 › 可変デフォルト引数が呼び出しをまたいで共有される › パターン2
可変デフォルト引数が呼び出しをまたいで共有される
リストや辞書をデフォルト引数にすると、その1つのオブジェクトが全ての呼び出しで共有されます。
1 def record(name, log=______): ^ 2 if log is None: 3 log = {} 4 log[name] = True 5 return log 6 7 print(record("a")) 8 print(record("b"))
出力: {'a': True}
{'a': True, 'b': True}期待: {'a': True} / {'b': True} (エラーにはなりません)
空欄を埋めて実行を通す
辞書のデフォルト引数も同じです。共有された1つの辞書に、呼び出しのたびに項目が積み上がっていきます。
次の問題