f-string で文字列を組み立てる
f-string で文字列を組み立てる とは
f-string を使って変数や式を埋め込んだ文字列を作る方法を学びます。本レッスンでは、f-string で文字列を組み立てる の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
f-string とは
f-string (formatted string literal) は、文字列リテラルの先頭に f を付けることで 波カッコ {} の中に式を埋め込める Python の構文です。Python 3.6 から追加された新しい書き方で、str 連結や .format メソッドより読みやすく、現在は 文字列組み立ての標準 になっています。
Python
name = 'Ada'
age = 36
message = f'{name} は {age} 歳です'
return message # 'Ada は 36 歳です'波カッコの中には変数だけでなく、式や関数呼び出しも書けます。f'合計: {price * qty}円' のように、その場で計算して埋め込めるのが強みです。
f-stringのfはformattedの頭文字で、'でも"でも使えます。複数行に渡したいときはf'''...'''も使えます。
基本の書き方
波カッコ内には Python の任意の式を書けます。次のサンプルで雰囲気がつかめます。
Python
name = 'Ada'
f'{name}' # 'Ada'
f'{name.upper()}' # 'ADA'
f'{len(name)}' # '3'
f'{1 + 2}' # '3'
f'{name if name else "なし"}' # 'Ada'{} の中で name.upper() のようにメソッドを呼んだり、if 式で分岐したりできます。式の評価結果が自動的に str に変換されるので、int でも list でもそのまま埋め込めます。
書式指定
波カッコ内で : の後ろに書式を指定すると、見た目を細かく整えられます。
Python
pi = 3.14159265
f'{pi:.2f}' # '3.14' 小数点以下 2 桁
f'{pi:.4f}' # '3.1416'
f'{1000:,}' # '1,000' 千の位区切り
f'{42:05d}' # '00042' 5 桁ゼロ埋め
f'{'ab':>5}' # ' ab' 右寄せ 5 文字
f'{'ab':<5}' # 'ab ' 左寄せ 5 文字
f'{'ab':^5}' # ' ab ' 中央寄せ書式指定は
{値:書式}の形で、小数点桁数、ゼロ埋め、左右寄せ、千の位区切りなど、よく使う見た目調整がそろっています。
動きを追ってみる
名前と年齢を受け取って自己紹介文を作る例です。
Python
def introduce(name, age):
return f'{name} ({age} 歳) と申します'
introduce('Ada', 36)
# 'Ada (36 歳) と申します'波カッコの中の name と age がそれぞれ展開され、str 連結や .format を呼び出すよりずっと読みやすくなります。
よくある間違い
f-string でつまずきやすいポイントを 3 つ紹介します。
fを付け忘れる'{name}'と書くと、波カッコがそのまま文字列リテラルになります。fを付けるのを忘れないようにしましょう。- 引用符を競合させる
f'{user['name']}'のように同じ引用符を入れ子にするとエラーになります。f'{user["name"]}'か、変数に取り出してから埋め込みます。 - 波カッコをエスケープしない 文字列の中に波カッコ自体を書きたいときは
{{}}と 2 つ重ねます。f'{{ {name} }}'で'{ Ada }'になります。
Python 3.12 からは
f-stringの中でも自由に引用符を混ぜられるようになりましたが、古い環境を意識するなら入れ子の引用符は避けましょう。
デバッグに便利な =
Python 3.8 以降では、f-string の中で {value=} という書き方ができるようになりました。これは 変数名と値の両方を表示 する便利な書き方で、デバッグ時に重宝します。
Python
name = 'Ada'
age = 36
print(f'{name=}, {age=}')
# name='Ada', age=36print でデバッグするときに、いちいち f'name={name}' と書かなくてよくなるので、f-string を使い始めたらぜひ覚えておきましょう。書式指定と組み合わせて {pi=:.2f} のように書くこともできます。
やってみよう
商品名 name と価格 price を受け取り、'りんごは100円です' のような文章を返す関数 make_message を実装してください。f-string を使うと 1 行で書けます。価格は int で渡されるので、str で囲む必要はありません。テストでは複数の組み合わせと 0 円のケースも渡されます。
よくある質問
Q. このトピックは Python 以外の言語でも同じ書き方ですか?
A. 考え方は他言語と共通ですが、構文や標準ライブラリは異なります。Python はインデントでブロックを表し、コロン + 改行で構造を作るのが特徴です。他言語に移行する際は基本概念を維持しつつ、構文の差分を意識して書き換えると混乱が少ないです。
Q. 実行してエラーが出た場合の対処は?
A. エラーメッセージの最後の行(TypeError や NameError などの型)から原因と該当行を確認します。Python はトレースバックが下から上に読むと「呼び出し元 → 内部」の順で辿れます。print や IDE のデバッガで途中の変数を確認すると原因が見えてきます。
Q. 次のステップで何を学ぶべきですか?
A. 本レッスンの内容を理解できたら、本文の「やってみよう」を実装し、章末クイズに進むのがおすすめです。さらに自分のミニアプリ(電卓・todo・スコア集計など)に応用するとスキルが定着します。詰まったら本文の H2 セクションに戻って読み返してください。
次のレッスン
次は イミュータブル型とタプル で、f-string を使って変数や式を埋め込んだ文字列を作る方法を学びます を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- f-string の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. f-string とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
要件
- f-string を使って文字列を組み立てる
- 波カッコの中に name と price を入れる
- '{name}は{price}円です' の形にする
入出力例
test-cases.txt
make_message("りんご", 100) → "りんごは100円です"
make_message("バナナ", 250) → "バナナは250円です"
make_message("試食", 0) → "試食は0円です"
make_message("apple", 120) → "appleは120円です"