どのように変数をフォーマットし、文字列に埋め込むべきか
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 という書籍が良いのでオススメです!
みんなもf文字列を活用して、読みやすく、スマートでかっこいいコードを書こう!
コメント