概要
Python
で文字列フォーマットを行う方法は、主に3種類あります。それぞれに利点があり、用途に応じて選択が可能です。以下では、%
演算子、str.format()
, そして f-string
の違いや使いどころについて詳しく説明します。
%
演算子によるフォーマット
古くから使われているフォーマット方法で、シンプルな記法が特徴です。特に軽量なスクリプトには今でも使用されますが、柔軟性が低く、複数の変数を扱う際にはやや不便です。
name = "Alice"
print("Hello, %s!" % name) # Hello, Alice!
利点
- シンプルで直感的。
- 変数が少ない場合や簡単なフォーマットには便利。
欠点
- 複雑なフォーマットには不向き。
- タプルや辞書を使う場合は追加の操作が必要。
str.format()
メソッド
Python
2.6以降で導入された str.format()
は、より柔軟なフォーマットを可能にします。位置指定やキーワード引数を使ったフォーマットが可能で、複雑なテンプレートにも対応できます。
name = "Alice"
age = 30
print("Name: {0}, Age: {1}".format(name, age)) # Name: Alice, Age: 30
利点
- 位置指定や名前指定が可能で、複雑なフォーマットに強い。
- 可読性が高く、リストや辞書との相性が良い。
欠点
- 記述が長くなることがある。
- パフォーマンスはf-stringに劣る。
f-string
(フォーマット文字列リテラル)
Python
3.6以降で導入されたf-stringは、現在最も推奨されるフォーマット方法です。f"..."
の中に直接変数や式を埋め込むことができ、シンプルかつ効率的です。
name = "Alice"
age = 30
print(f"Name: {name}, Age: {age}") # Name: Alice, Age: 30
利点
- 他の方法よりも高速で効率的。
- 変数や式を簡単に埋め込めるため、可読性が高い。
欠点
Python
3.6以降でしか使用できない。- コードの中に式が多くなると、複雑さが増す可能性がある。
パフォーマンス比較
f-stringはパフォーマンスの面でも優れており、大量の文字列処理を行う場合は、%
演算子や str.format()
よりも高速です。特にリアルタイム性が求められる場面ではf-stringが推奨されます。
# パフォーマンステスト例
import timeit
timeit.timeit('name = "Alice"; f"Hello {name}!"', number=1000000)
結論
%
演算子: 簡単なフォーマットに適しており、歴史的な理由で依然として使われています。str.format()
: 柔軟性が高く、位置指定や複雑なフォーマットが可能です。f-string
:Python
3.6以降で最も推奨される方法。シンプルで効率的、かつ可読性が高いのが特徴です。