上級 › 可変デフォルト引数が呼び出しをまたいで共有される › パターン4
可変デフォルト引数が呼び出しをまたいで共有される
リストや辞書をデフォルト引数にすると、その1つのオブジェクトが全ての呼び出しで共有されます。
1 def tag(label, tags=_____): ^ 2 if tags is None: 3 tags = set() 4 tags.add(label) 5 return tags 6 7 print(tag("a")) 8 print(tag("b"))
出力: {'a'}
{'a', 'b'}期待: {'a'} / {'b'} (エラーにはなりません)
空欄を埋めて実行を通す
集合(set)を既定値にしても同じです。関数定義時に1つだけ作られたsetが、全ての呼び出しで共有されます。
次の問題