format 関数 ― 文字列への変数の埋め込み 3 (Python 3)

2022-02-17

#Python3 #基本解説 文字列

Python 3 で文字列に変数や定数の値を埋め込む方法の第3回は、組み込み関数の format() です。

format 関数

format() 関数は、オブジェクト (文字列や数値など,インスタンス) を書式化して返す関数です。

構文と例

引数は、次の形式で指定します。

と言っても解りにくいので、まずは例を挙げます。

例のように、format() 関数は文字列や数値などのオブジェクトに対して、書式指定ミニ言語で指定した書式を適用した結果を返します。

ゼロ埋め

format() 関数はゼロ埋め (ゼロパディング) に応用できます。

数値文字列の場合は一旦 int に変換することで、符号表記の問題を回避します。
int や float の値には format()、str の数値文字列には str.zfill() が便利です。

実装の詳細

より正確に言えば、format(オブジェクト, 書式) はオブジェクトのクラス (組み込み型など) の .__format__() メソッドを呼び出します。その際に書式が引数として渡されます。
従って、指定した書式がどのように解釈されるかは、オブジェクトのクラスの実装に依存します。
ただし str や int などの組み込み型では、書式指定ミニ言語形式で解釈される場合がほとんどです。

str.format() メソッドとは異なる

組み込み関数 format() は、str オブジェクトのメソッド str.format() とは違う関数です。
どちらも書式指定ミニ言語が使える点は同じですが、引数の指定方法は全く異なりますので、混同しないように注意しましょう。

なお str.format() メソッドを「format 関数」として解説する文献も少なくありませんが、公式の表現に従えばこれは誤りです。解説者も混同するほどの紛らわしさと言えるでしょう。

format() 関数の必要性

format() 関数はシンプルな機能のみを持っており、複合的な文字列の埋め込みには向きません。
文字列の埋め込みには f 文字列や str.format() メソッドのほうが便利です。

この関数を使う機会は少ないのですが、自分以外の人が書いたスクリプトを読むときなど、混同を避ける為に覚えておいて損はないでしょう。

参考

※ Python 3.10 で動作確認。

QooQ