Pythonのf-stringとは、文字列の中に変数や式を埋め込むための書き方です。
文字列を+でつなぐよりも、何を表示したいのかを自然な順番で書けます。printで結果を見せる練習や、ログ、メッセージ作成でよく使います。

f-stringは『fを付けた文字列の中で、{} の中だけPythonの式として読む』と考えると整理しやすいです。
この記事では、f-stringの基本、変数や式の埋め込み、小数点の表示、formatとの違い、初心者がつまずきやすい点を解説します。
次の図では、f-stringを文章テンプレートの穴へ変数を差し込むイメージとして見てください。

次の図では、数値がf-stringの書式指定を通って、画面に出すための読みやすい文字列へ整う流れを見てください。

まず結論:f"...{変数}..."で値を埋め込む
Python公式チュートリアルでは、f-stringは文字列の前にfまたはFを付け、波括弧の中にPython式を書ける文字列リテラルとして説明されています。
f-stringの基本形
基本形は、文字列の前にfを付け、埋め込みたい変数を{}で囲みます。
name = "Sato"
age = 25
message = f"{name}さんは{age}歳です"
print(message)
このコードでは、{name}がSatoに、{age}が25に置き換わります。文字列そのものの基本はPythonの文字列操作も参考になります。
文字列連結より読みやすい
同じ内容を+でつなぐと、型変換や記号が増えて読みにくくなりがちです。
name = "Sato"
age = 25
print(name + "さんは" + str(age) + "歳です")
print(f"{name}さんは{age}歳です")
f-stringでは、数値のageも表示用の文字列として自然に埋め込めます。型変換の考え方はint() float() str()の記事で詳しく扱っています。
式も書ける
波括弧の中には、変数だけでなく簡単な式も書けます。
price = 1200
count = 3
print(f"合計は{price * count}円です")
ただし、長い計算や複雑な条件をf-stringの中に詰め込みすぎると読みにくくなります。複雑な処理は先に変数へ入れてから埋め込む方が安全です。
小数点や桁区切りを指定する
f-stringでは、:の後に書式指定を書くことで、小数点や桁区切りを調整できます。
rate = 0.12345
amount = 1234567
print(f"割合: {rate:.2%}")
print(f"金額: {amount:,}円")
{rate:.2%}は百分率で小数第2位まで、{amount:,}は3桁区切りで表示します。より細かい書式は、formatメソッドと同じ考え方で理解できます。
formatメソッドとの違い
| 書き方 | 例 | 初心者向けの見方 |
|---|---|---|
| f-string | f"{name}さん" | 文字列の中で変数を直接読む |
| format | "{}さん".format(name) | 後ろから値を差し込む |
| 文字列連結 | name + "さん" | 短い場合だけなら読める |
新しく書くコードでは、単純な埋め込みならf-stringが読みやすい場面が多いです。既存コードではformatも出てくるため、どちらも読めるようにしておくと安心です。
デバッグ表示にも使える
変数名と値を一緒に見たいときにもf-stringは便利です。
score = 82
print(f"score={score}")
練習中は、処理の途中で変数がどう変わったかをprintで確認する場面が多くあります。print関数とf-stringを組み合わせると、確認用の表示が読みやすくなります。
初心者がつまずきやすいポイント
| つまずき | まずこう理解する |
|---|---|
先頭のfを忘れる | {name}がそのまま表示される |
| 波括弧の外で式を書こうとする | Python式として読まれるのは{}の中 |
| 複雑な式を詰め込む | 長い処理は先に変数へ入れる |
| 引用符が混ざる | 外側と内側の引用符を分ける |
辞書やリストの値も埋め込める
f-stringの{}の中には式を書けるため、辞書やリストから取り出した値も埋め込めます。
user = {"name": "Sato", "score": 82}
print(f"{user['name']}さんの点数は{user['score']}点です")
ただし、引用符が増えると読みにくくなります。複雑に見える場合は、先に変数へ取り出してからf-stringに入れると安全です。
name = user["name"]
score = user["score"]
print(f"{name}さんの点数は{score}点です")
複数行の文字列で使う
長いメッセージを作るときは、複数行のf-stringを使うこともあります。
name = "Sato"
score = 82
message = f"""
{name}さん
点数: {score}
判定: {'合格' if score >= 60 else '不合格'}
"""
print(message)
ただし、条件式まで入れると読みにくくなることがあります。表示用の文章を作るだけなら便利ですが、処理の本体をf-stringの中へ押し込まないようにしましょう。
format指定は少しずつ覚える
f-stringの書式指定は便利ですが、最初からすべて覚える必要はありません。まずは小数点、桁区切り、幅の指定をよく使います。
| 目的 | 書き方 | 例 |
|---|---|---|
| 小数第2位まで | {value:.2f} | 3.14 |
| パーセント表示 | {rate:.1%} | 12.3% |
| 3桁区切り | {amount:,} | 1,234 |
| 右寄せ | {name:>10} | 幅をそろえる |
練習するときのおすすめ例
f-stringは、変数の値を見やすく表示する練習に向いています。計算そのものより、読みやすい出力を作る意識で試すと身につきます。
よくある疑問
f-stringはprint専用?
print専用ではありません。f-stringは文字列を作る書き方なので、変数に入れる、ファイルへ書く、ログに渡す、関数の戻り値にするなど、文字列が必要な場所で使えます。
def build_message(name, score):
return f"{name}さんの点数は{score}点です"
波括弧そのものを表示したいときは?
f-stringで波括弧そのものを表示したい場合は、波括弧を二重にします。{{と}}を書くと、表示結果では1つの波括弧になります。
name = "Sato"
print(f"{{name}} の値は {name} です")
古いformatは覚えなくてよい?
新しく短いコードを書くならf-stringで十分な場面が多いです。ただし、既存コードや教材ではformatもまだ出てきます。完全に置き換えるというより、f-stringを中心にしつつ、formatも読める状態にしておくのが現実的です。
特にチーム開発では、既存コードの書き方に合わせることもあります。f-stringを使えるようになったうえで、formatや文字列連結を見ても意味が分かる状態にしておくと、古いコードと新しいコードの両方を読みやすくなります。検索して見つけたサンプルコードの理解にも役立ちます。
公式情報と関連して読みたい記事
- Python公式チュートリアル: Formatted String Literals
- Pythonの文字列操作
- Pythonのprint関数
- Pythonのformatメソッド
- int() float() str() データ型変換
まとめ
f-stringは、文字列の中に変数や式を埋め込むための読みやすい書き方です。
f-stringを使えるようになると、出力やメッセージ作成のコードがかなりすっきりします。
