🐍 Python
f-string(f"...") / str.format()
変数の値を文字列に埋め込んで組み立てる方法です。Python 3.6以降はf-string(f"...")が主流で、AIが生成するコードのほとんどもこの記法を使っています。古いコードや一部のライブラリではstr.format()も見かけるため、両方を読めるようにしておくと安心です。
構文: f"...{式}..." # f-string(推奨)
"...{}...".format(値) # str.format()
f-stringの基本
fを先頭に付けた文字列の中で、{変数名}と書くとその値がそのまま埋め込まれます。
name = "takamax"
score = 95
print(f"{name}: {score}点") # 'takamax: 95点'
書式指定で桁数やゼロ埋めを制御する
{値:書式}の形で書式指定を付けると、小数点の桁数やゼロ埋めを指定できます。.2fは小数点以下2桁、03dは3桁ゼロ埋めの整数という意味です。
pi = 3.14159265
print(f"{pi:.2f}") # '3.14'
n = 7
print(f"{n:03d}") # '007'
str.format():f-string以前の書き方
{}を並べておき、.format()の引数を順番に埋め込みます。{0}のように番号を指定すると、同じ値を複数箇所で使い回せます。
print("{}は{}歳です".format("Taro", 25)) # 'Taroは25歳です'
print("{0}-{1}-{0}".format("a", "b")) # 'a-b-a'
さらに古い%記法
C言語のprintfに似た%を使う書き方も、古いコードやログ出力の一部にまだ残っています。読めるようにしておくと役立ちます。
print("%s: %d" % ("count", 42)) # 'count: 42'
デバッグに便利な{x=}記法(Python 3.8以降)
f-stringで{変数名=}と書くと、「変数名=値」の形で自動的に出力してくれます。デバッグ用のprint文をすばやく書きたいときに便利です。
x = 10
print(f"{x=}") # 'x=10'
よく使う書式指定子
.2f- 小数点以下2桁で表示(小数)
03d- 3桁になるようゼロ埋めして表示(整数)
,- 3桁ごとにカンマ区切りを入れる(例:
f"{1234567:,}"→'1,234,567') >10/<10/^10- 幅10で右寄せ / 左寄せ / 中央寄せ
💡 AIコードレビュー観点:新しく書くならf-string以外は疑ってよい
2020年代以降に生成されたPythonコードで、文字列連結を+で延々とつないでいたり、%記法や古い.format()が使われていたりする場合、それ自体は動きますが可読性の観点で見劣りします。特に"a" + str(n) + "b"のような+連結と数値の文字列変換が混在するコードは、f-string1行に書き直せることが多いです。