Code Fix

上級可変デフォルト引数が呼び出しをまたいで共有される › パターン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} (エラーにはなりません)

空欄を埋めて実行を通す

広告
広告スロット(未設定)

可変デフォルト引数が呼び出しをまたいで共有される

呼び出すたびに新しく作られるわけではありません。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)