【Python】f-strings(f文字列)が便利すぎる!変数埋め込みの新しい常識

「変数と文字列を組み合わせる時、なんだか面倒だなぁ…」「よくわからないエラーが出て困った…」

そう感じているあなた!大丈夫です、その気持ち、よーく分かります。

Pythonでメッセージを作ったり、ログを出力したりする時って、変数と普通の文字列をくっつけたり、値を埋め込んだりする作業が頻繁に出てきますよね。

例えば、

  • "こんにちは、" + name + "さん!"
  • "合計金額は" + str(price) + "円です。"

こんな風に+記号でつなげようとすると、数字と文字列を間違えてTypeErrorが出たり、毎回str()で型変換するのが煩わしかったり…

あるいは、

  • "こんにちは、{}さん!".format(name)
  • "合計金額は{}円です。".format(price)

.format()メソッドも悪くないけど、{}がたくさんあると、どの変数が入るのか分かりにくくなったり、順番を間違えて「あれ?」ってなったり。

せっかく動くコードを書いても、読むのが大変だと、またエラーを出してしまう原因にもなりかねません。

でも、安心してください!
今日ご紹介する「f-strings(f文字列)」を使えば、これらの面倒が嘘のように解消され、あなたのコードは格段に読みやすく、そして書きやすくなります。一度使ったら、もう以前のやり方には戻れませんよ!

f-strings(f文字列)って何?

f-stringsは、Python 3.6から導入された、文字列の中に直接変数の値を埋め込んだり、計算結果を表示したりできる便利な機能です。

「文字列リテラル」と呼ばれる、"'で囲まれた文字の並びの前に、ただfという文字をつけるだけで使えるようになるため、「f文字列」と呼ばれています。

専門用語は難しく聞こえるかもしれませんが、要は「こんなメッセージを作りたいんだけど、ここの部分は変数の値を入れてね!」というお願いが、とっても簡単に、しかもわかりやすく書けるようになる、ということです。

超基本!f-stringsの使い方(これだけ覚えればOK)

それでは早速、f-stringsの基本中の基本を見ていきましょう。
「こんにちは、〇〇さん!」というメッセージを作る例で比較してみます。

昔ながらの面倒な方法(こんな経験ありませんか?)

“`python
name = “太郎”
price = 1500

+演算子を使う場合

数字と文字列を直接つなげようとするとエラーになるので、str()で変換する必要がある

message_plus = “こんにちは、” + name + “さん!”
print(message_plus)

priceを直接つなげるとTypeError

message_error = “合計金額は” + price + “円です。”

print(message_error) # TypeError: can only concatenate str (not “int”) to str

.format()メソッドを使う場合

message_format = “こんにちは、{}さん! 合計金額は{}円です。”.format(name, price)
print(message_format)

{ } が多いと、どの変数がどこに入るか分かりにくくなることも

message_complex_format = “商品名: {}、価格: {}円、数量: {}個。合計は{}円です。”.format(item, price, quantity, total)

“`

このコード、見覚えがありますよね?+でつなぐのは型変換が面倒だし、.format()も順番を間違えると困ります。

f-stringsを使った解決策!(もうこれしか使いたくない!)

さあ、本命のf-stringsです!
先ほどの例を、f-stringsで書き直してみましょう。

“`python
name = “太郎”
price = 1500

f-stringsを使う場合

message_fstring = f”こんにちは、{name}さん!”
print(message_fstring)

message_fstring_price = f”合計金額は{price}円です。”
print(message_fstring_price)

複数の変数を埋め込むのも簡単!

message_combined = f”こんにちは、{name}さん! 合計金額は{price}円です。”
print(message_combined)
“`

いかがでしょう?

  1. 文字列の前にfをつける。
  2. 埋め込みたい変数を{}(波括弧)で囲む。

これだけで、驚くほどスッキリと、そして読みやすくなりましたよね!
変数名が直接波括弧の中にあるので、どの変数がどこに表示されるのか一目瞭然です。型変換もPythonが自動でやってくれるので、str()を書く手間もありません!

f-stringsのここがすごい!応用編

f-stringsの真価は、単に変数を埋め込むだけでなく、より複雑な処理も{}の中でこなせる点にあります。

計算もできる!

{}の中には、変数だけでなく、Pythonの「式」を書くことができます。
「式」というのは、計算したり、結果を返すもののことです。つまり、簡単な計算なら、{}の中でそのままできてしまうんです!

“`python
apple_price = 120
orange_price = 150
num_apples = 3
num_oranges = 2

f-stringの中で直接計算

total_price = f”りんご{num_apples}個とオレンジ{num_oranges}個の合計金額は、{apple_price * num_apples + orange_price * num_oranges}円です。”
print(total_price)

出力例: りんご3個とオレンジ2個の合計金額は、660円です。

“`

わざわざ事前に計算結果を変数に入れておく必要がなくなるので、コードがさらに短くなりますね。

関数も呼び出せる!

計算だけでなく、len()のような簡単な関数を呼び出すこともできます。

“`python
user_name = “山田花子”
data = [1, 2, 3, 4, 5]

f-stringの中で関数を呼び出す

message_length = f”ユーザー名「{user_name}」は、全部で{len(user_name)}文字です。”
print(message_length)

出力例: ユーザー名「山田花子」は、全部で5文字です。

message_data_len = f”データの要素数は{len(data)}個です。”
print(message_data_len)

出力例: データの要素数は5個です。

“`

これは便利ですね!一時的に値の長さを知りたい、といった場合に役立ちます。

書式も指定できる!

数字の小数点以下の桁数を揃えたり、日付の表示形式を変えたり、特定の桁数になるようにゼロで埋めたり…
プログラミングでは、値を特定の「書式」で表示したいことがよくあります。

f-stringsでは、{変数:書式指定子}のように、コロン(:)の後に「書式指定子」を記述することで、細かな表示形式を指定できます。

「書式指定子」と聞くと難しそうですが、要は「こんな形で表示してね!」とPythonにお願いする記号のことです。よく使うものをいくつか見てみましょう。

1. 小数点以下の桁数を指定する

価格や割合など、小数点以下の桁数を揃えたいときに使います。

  • :.2f: 小数点以下2桁まで表示(fはfloat=浮動小数点数を意味します)

“`python
pi = 3.14159265
tax_rate = 0.08
price = 123.456

小数点以下2桁まで表示

message_pi = f”円周率(小数点以下2桁): {pi:.2f}”
print(message_pi)

出力例: 円周率(小数点以下2桁): 3.14

割合をパーセンテージで表示

message_tax = f”消費税率: {tax_rate:.1%}” # .1% で小数点以下1桁のパーセンテージ
print(message_tax)

出力例: 消費税率: 8.0%

message_price = f”商品価格(小数点以下2桁): {price:.2f}円”
print(message_price)

出力例: 商品価格(小数点以下2桁): 123.46円 (四捨五入されます)

“`

2. 整数を特定の桁数で表示(ゼロ埋め)

ID番号など、桁数を揃えて表示したいときに使います。

  • :03d: 3桁になるように前にゼロを埋める(dはdecimal=整数を意味します)

“`python
item_id = 7
order_number = 123

3桁になるようにゼロ埋め

message_item_id = f”商品ID: {item_id:03d}”
print(message_item_id)

出力例: 商品ID: 007

5桁になるようにゼロ埋め

message_order = f”注文番号: {order_number:05d}”
print(message_order)

出力例: 注文番号: 00123

“`

これらの書式指定子を使いこなせば、データ表示の自由度がグンと上がりますよ!

f-stringsを使わないともう損! まとめ

f-strings(f文字列)の便利さ、伝わりましたでしょうか?

まとめると、f-stringsを使うことで、あなたのPythonコードは…

  • 可読性が格段にアップ!
    • 変数名が直接表示されるので、コードを見ただけで何の値が表示されるかすぐに分かります。
  • エラーが減る!
    • 特に+演算子で起こりがちなTypeError(型エラー)は激減します。Pythonが自動で型変換してくれるからです。
  • 記述量が減ってコードがスッキリ!
    • str().format()を書く手間が省け、コードが簡潔になります。
  • 初心者でもすぐに使える簡単さ!
    • fをつける、{}で囲む、これだけで始められます。

業務効率化が得意な現役エンジニアの視点から見ても、f-stringsはPythonを使う上で必須のテクニックと言っても過言ではありません。この小さな工夫一つで、あなたのプログラミングがもっと楽しく、もっと効率的になるはずです。

さあ、あなたも今日からf-stringsを積極的に使って、快適なPythonライフを送りましょう!
もう「あのエラー、面倒だなぁ…」と悩む必要はありません。

コメント

タイトルとURLをコピーしました