デフォルトの引数は、関数が定義されたときにバインドされ、呼び出されないため、Python では通常、フォームのデフォルトの引数を使用しx={}
ても意図した目的を達成できません。
規則は、変更可能なオブジェクトをデフォルトの引数として設定し、関数が呼び出されたときに適切なデフォルトを割り当てることx=None
を確認するようです。x is None
したがって、x
デフォルトで空の辞書にキャストしたい場合は、次のようなものを使用します。
def f(x=None):
x = dict(x) if x is not None else {}
ただし、dict
任意のイテラブルを使用できるため、次のより簡潔なバージョンを書くこともできます。
def f(x=()):
x = dict(x)
これらのうち、「正しい」アプローチはどれですか?