Python の文字列フォーマットに format()やCスタイルはダサい!? f文字列を効果的に活用する方法

Python
フォーマットのやり方

どのように変数をフォーマットし、文字列に埋め込むべきか

Pythonで文字列を扱う際に、文字列の中に変数を埋め込んだり、埋め込んだ変数のフォーマットを指定したい場合があります。

例えば以下のような状況です。

favorite_fruit = "りんご"
print("私の好きな果物は" + favorite_fruit + "です。")

これを実行すると
私の好きな果物はりんごです。
と出力されますが、コードとして可読性が悪いです。

今回、埋め込みたい変数は一つでしたのでなんとか読めますが、これが三つ四つとなると自分以外の人が読めないコードになってしまいます。

もっとかっこよくスマートなコードを書きたいな…

これを回避するためにPythonでは以下の方法が用意されています。
具体的には

  • Cスタイルフォーマット
  • str.format()
  • f文字列(フォーマット済み文字列)

の三つです。

この三つの内、覚えるべきは一番下のf文字列です。これ以外は覚えなくて大丈夫です。

f文字列(フォーマット済み文字列)

f文字列の使い方

f文字列の使い方はとても簡単で、先程の例では

favorite_fruit = "りんご"
print(f"私の好きな果物は{favorite_fruit}です。")

と書くことで使えます。

Cスタイルフォーマットやstr.format()と比べて圧倒的に記述するコードの量が減る、かつ見やすくなるので、特別な事情が無い限りはこれを使うと良いでしょう。

フォーマットの指定

フォーマットの指定も簡単で、例えば小数の変数に対して、桁数を指定したい場合は以下のように書きます。

float_var = 0.01234
print(f"小数点第2位までを出力: {float_var:.2f}")

フォーマットの指定は様々な種類があるので、必要な公式ページから探すのが良いでしょう。https://docs.python.org/ja/3.8/library/string.html#format-string-syntax

式や変数の評価結果の出力

f文字列は変数の中身の出力にも非常に便利です。

例えば以下のように、変数 a の中身を print したい、という場面があったとします。

favorite_fruit = "apple"
print(f"変数 favorite_fruit の中身は{favorite_fruit}です。")

見たい変数や評価したい式が一つであればこれでも良いですが、これが3つも4つもとなると非常に書くのが面倒です。

f文字列にはPython3.8から実装された強力な拡張があり、上記のコードと同等のことを以下の式に書き換えられます。

print(f"{favorite_fruit=}")

このように変数の後にイコール(=)をつけるだけで favorite_fruit=’apple’ というように変数名とセットで評価の結果を出力してくれます。

これは変数だけでなく複雑な式に対しても使えるものであり、

a = 1
print(f"{a*10+1=}")

とすると、 a*10+1=11 という出力となります。

まとめ

f文字列は以下の場面で非常に有効で、読みやすくスマートなコードを書くのに向いています。

  • 変数を文字列に埋め込みたいとき
  • 変数のフォーマットを指定したいとき
  • 変数の中身を出力したいとき

なお、このような細かいPythonのテクニックを学ぶには以下の Effective Python という書籍が良いのでオススメです!

Effective Python 第2版 ―Pythonプログラムを改良する90項目
GoogleでPythonを使ったさまざまなサービスを立ち上げ、Pythonを知り尽くした著者による、Pythonエキスパート必携書の改訂版です。 第2版ではPython 3.8に対応、データ構造、内包表記とジェネレータ、性能、デバッグについての章を新たに追加するなど、第1版の59項目を大幅に改訂し、90項目にわたって

みんなもf文字列を活用して、読みやすく、スマートでかっこいいコードを書こう!

コメント

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