f-string で文字列を組み立てる

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

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-stringfformatted の頭文字で、' でも " でも使えます。複数行に渡したいときは 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 歳) と申します'

波カッコの中の nameage がそれぞれ展開され、str 連結や .format を呼び出すよりずっと読みやすくなります。

diagram (will load when visible)

よくある間違い

f-string でつまずきやすいポイントを 3 つ紹介します。

  1. f を付け忘れる '{name}' と書くと、波カッコがそのまま文字列リテラルになります。f を付けるのを忘れないようにしましょう。
  2. 引用符を競合させる f'{user['name']}' のように同じ引用符を入れ子にするとエラーになります。f'{user["name"]}' か、変数に取り出してから埋め込みます。
  3. 波カッコをエスケープしない 文字列の中に波カッコ自体を書きたいときは {{ }} と 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=36

print でデバッグするときに、いちいち 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 つができることを確認しましょう。

  1. f-string の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. f-string とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

要件

  1. f-string を使って文字列を組み立てる
  2. 波カッコの中に name と price を入れる
  3. '{name}は{price}円です' の形にする

入出力例

test-cases.txt

make_message("りんご", 100)"りんごは100円です" make_message("バナナ", 250)"バナナは250円です" make_message("試食", 0)"試食は0円です" make_message("apple", 120)"appleは120円です"

ヒント

main.py
main.py
学習モード

メモ

f-string で文字列を組み立てる

⌘S で保存