Python関数のオプション引数のデフォルト値として空の中括弧を入れたところ、pylint(Sublimeパッケージを使用)は危険だと言っていました。代わりにNoneを使用するより良い代替手段はありますか?
関数が引数を変更する場合にのみ危険です。デフォルトの引数を変更すると、次の呼び出しまで保持されるため、「空の」辞書には最初の呼び出し以外の呼び出しの値が含まれるようになります。
はい、そのような場合にNone
を使用することは安全であり、従来どおりです。
例を見てみましょう:
def f(value, key, hash={}):
hash[value] = key
return hash
print f('a', 1)
print f('b', 2)
あなたはおそらく出力することを期待しています:
{'a': 1}
{'b': 2}
しかし、実際に出力するもの:
{'a': 1}
{'a': 1, 'b': 2}