Menu
日本語

Python f-string入門:変数展開と数値フォーマット完全ガイド

Pythonのf-stringの使い方を実例で解説。変数や式の埋め込み、小数点以下の桁数指定、ゼロ埋め・桁揃え、日付フォーマットまで、現場で使う書き方をまとめました。

実際によく使うフォーマット

現代のPythonコードで文字列に値を埋め込むときの定番が、このf-string(フォーマット済み文字列リテラル)です。クォートの前に f を付けるだけで、{...} の中に書いた式がその場で評価されます。

main.py
Output
Click Run to see the output here.

ポイントは3つ。まず、先頭の f を付けることで、文字列リテラル全体がテンプレートとして扱われるようになります。次に、{} は値を差し込むための場所。そして、その中に書いた式は、文字列を書いた瞬間ではなく print が実行される瞬間に評価されます。

実務では、他のどのフォーマット方法よりも f-string を使う場面が圧倒的に多くなります。"Hello, " + name + "." より短く、"Hello, %s." % name よりわかりやすく、.format() より柔軟。まさに python 文字列フォーマットの定番です。

{} の中には「評価できるもの」なら何でも書ける

{} に入れられるのは変数名だけではありません。Python の式ならどんなものでもOKです:

main.py
Output
Click Run to see the output here.

メソッド呼び出し、インデックス、四則演算、条件式 — どれも使えます。ルールはひとつだけ。波カッコの中はできるだけ短くすること。プレースホルダーの中に3行がかりの計算を書くくらいなら、いったん名前付きの変数に入れてから、その名前だけを埋め込みましょう。

数値をフォーマットする

式のうしろにコロン(:)を置くと、そこから フォーマット指定(format spec) が始まります。これは値の表示方法を細かく制御するためのミニ言語です。

main.py
Output
Click Run to see the output here.

各書式指定子の意味をサクッとまとめておきます。

  • .2f — 浮動小数点数を小数点以下2桁で表示。表示用に四捨五入されます。
  • , — 3桁区切りのカンマ。int でも float でも使えます。
  • .1% — 100倍して % を付ける書式。比率やパーセンテージに便利。
  • .2e — 小数点以下2桁の指数表記。

これらは組み合わせて使えます。たとえば f"{total:,.2f}" なら "1,234.57" のように出力されます。

桁揃え・幅指定・ゼロ埋め

列をきれいに揃えて出力したいときは、次のように書きます。

main.py
Output
Click Run to see the output here.

<10 は「左寄せで、最低10文字分になるようにパディングする」という意味です。>5 なら「右寄せで5文字分に揃える」、^ を使えば中央寄せになります。

スペース以外の文字で埋めたいときは、寄せ方を指定するフラグの前に埋め文字を書けばOKです。

main.py
Output
Click Run to see the output here.

日付のフォーマット

datetime オブジェクトにも、同じ {値:書式指定} の構文がそのまま使えます。

main.py
Output
Click Run to see the output here.

コロン以降に書く指定は strftime のフォーマット文字列です。strftime で使える % コードはすべてそのまま使えます。詳しい内容は datetime のページで解説します。

デバッグに便利な = の小技

f-string の地味に便利な機能のひとつがこれです。式のあとに = を付けると、Python が式のソースコードと評価結果の両方を出力してくれます。

main.py
Output
Click Run to see the output here.

出力は count=7price=19.99count * price=139.93 のようになります。print("count =", count) と書いていたものが、たった3文字で済むわけです。デバッグ中に変数の中身をちょっと確認したいときに、覚えておくと便利なテクニックです。

波括弧をエスケープする

出力にリテラルの {} をそのまま入れたいときは、二重にして書きます。

main.py
Output
Click Run to see the output here.

シングルの波かっこ { は式の開始を表すので、出力にそのまま {} を含めたいときは {{}} のようにエスケープします。

複数行の f-string

f-string はトリプルクォートとも相性がよく、コード中に小さなテンプレートを書きたいときに便利です。

main.py
Output
Click Run to see the output here.

長い f-string は、隣り合う文字列リテラルに分割して書くこともできます。Python が自動で連結してくれるので、以下のように書けます。

main.py
Output
Click Run to see the output here.

昔ながらの書き方を目にすることもある

既存のコードを読んでいると、古いフォーマットの書き方に出くわすことがあります。主に次の2種類です。

main.py
Output
Click Run to see the output here.

出力結果はどれも同じになります。読みやすさで選ぶなら、10回中9回は f-string の勝ちです。テンプレートを一度作って何度も使い回したい場面では .format() が便利ですし、% は既に % を使っている古いコードをメンテするときだけで十分です。

f-string が向かないケース

f-string を避けたほうがいい場面が 2 つあります。

SQL クエリの組み立て。 ユーザー入力を f-string で SQL 文字列に埋め込むのは絶対にやめましょう。必ずデータベースライブラリのパラメータ化クエリを使ってください。ここで f-string を使うと、まさに SQL インジェクションの温床になります。

多言語対応の UI テキスト。 アプリが複数言語に対応している場合、外部の翻訳ツールが拾えるテンプレート形式を使う必要があります。一般的には gettext_(...) か、フレームワーク固有のヘルパーです。f-string は文章の構造をソースコードに直接焼き込んでしまうため、翻訳作業が一気にやりにくくなります。

それ以外の用途 —— ログ出力、コンソール表示、URL の組み立て、設定文字列の生成、表示用の数値フォーマットなど —— では、f-string が最適解です。

次回:数値と真偽値

f-string は数値のフォーマットで特に活躍するので、数値型についてもう少し踏み込んで理解しておくと役立ちます。次の章で見ていきましょう。

よくある質問

Pythonのf-stringとは何ですか?

f-stringは、先頭にfを付けた文字列リテラルのことです。{...}の中に書いた式が実行時に評価され、その値が文字列に埋め込まれます。たとえばf"Hello, {name}"と書けば、nameの中身がそのまま文字列に差し込まれます。

f-stringはいつから使えるようになりましたか?

Python 3.6から導入されました。現行のPython 3ならどのバージョンでも使えるので、今新しくコードを書くなら基本はf-stringでOKです。古い%記法や.format()も動きはしますが、多くのケースでf-stringの方が読みやすく書けます。

数値を小数点以下2桁でフォーマットするには?

波括弧の中でコロンの後にフォーマット指定を書きます。f"{price:.2f}"と書けばOKです。.2fは「小数点以下2桁の浮動小数点数」という意味で、表示用に丸められるだけで元の変数の値は変わりません。

f-stringの中にはどんな式を書けますか?

四則演算、メソッド呼び出し、関数呼び出し、三項演算子など、式ならだいたい何でも書けます。f"{name.upper()}"f"{price * 1.2:.2f}"も問題なく動作します。ただし中の式が複雑になってきたら、いったん変数に代入してから埋め込んだ方が読みやすいコードになります。

Coddyでコードを学ぼう

始める