「変数と文字列を組み合わせる時、なんだか面倒だなぁ…」「よくわからないエラーが出て困った…」
そう感じているあなた!大丈夫です、その気持ち、よーく分かります。
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)
“`
いかがでしょう?
- 文字列の前に
fをつける。 - 埋め込みたい変数を
{}(波括弧)で囲む。
これだけで、驚くほどスッキリと、そして読みやすくなりましたよね!
変数名が直接波括弧の中にあるので、どの変数がどこに表示されるのか一目瞭然です。型変換も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ライフを送りましょう!
もう「あのエラー、面倒だなぁ…」と悩む必要はありません。

コメント