Pythonの文字列フォーマットにはstr.format()
とstr.format_map()
という二つのメソッドがあります。これらは似ていますが、重要な違いがあります。
str.formatとstr.format_mapの基本的な違い
str.format(**kwargs)
は呼び出しの過程で新しい辞書を作りますが、str.format_map(kwargs)
はそうではありません。これは、str.format_map()
が辞書のサブクラス(または他のマッピングを実装するオブジェクト)を使用して、特別な振る舞い(例えば、欠落しているキーをうまく処理するなど)を可能にするため、わずかに高速であるとともに、有用です。
str.format_mapの利点
str.format_map()
は、str.format(**kwargs)
が持ついくつかの制限を克服します。例えば、str.format(**kwargs)
は、kwargs
に文字列が必要としないキーが含まれている場合、例外をスローしますが、str.format_map(kwargs)
はそれらを無視します。
また、str.format_map()
は、str.format(**kwargs)
がサポートしていない非辞書サブクラスをサポートしています。
まとめ
Pythonのstr.format()
とstr.format_map()
は、文字列のフォーマットに使用されますが、それぞれが異なるシナリオで有用です。str.format_map()
は、欠落したキーをうまく処理したり、非辞書サブクラスをサポートしたりするなど、str.format()
にはない柔軟性を提供します。