f-stringsとは
Python3.6から追加された文字列の操作のための新しい記法の一つです。例をあげてみるとこのような感じになります。
name = 'Bob' age = 20 f"my name is {name}. I am {age} year's old." # => my name is Bob. I am 20 years's old.
f'文字列'
というように、文字列の前にfをつけて宣言します。そして{}の中で動的に変数を展開し、その値を出力しています。
ドキュメントはこちらです。
www.python.org
This PEP is driven by the desire to have a simpler way to format strings in Python.
とあるように、文字列をフォーマットするためのより簡潔な記法を実現しています。
今までだと上記の例でしたら、次のように書く必要があり、format()
の分行が長くなります。
さらに、文章が長くなり代入する文字列も増えてくると、{}を発見した後にfomatの中身をみてもう一度{}を確認しに行く...といったコードリーディングの際にも冗長性が発生します。
"my name is {n}. I am {a} year's old.".format(n=name, a=age)
使い方例
こちらの記事を参考にしました。
関数を評価
{}内は動的に評価されるために、関数を書いてその返り値を出力することができます。
def calc_tax(price): return price * 1.08 f'This pencil is {calc_tax(100)} yen.' # => This pencil is 108 yen.
配列アクセス
fruits = ['apples', 'oranges', 'bananas'] f'I like {fruits[0]}' # => I like apples.
{}のネスト
{}はネスとしてもよく、その都度変数が展開されます。
float_val = 0.123456 size = 4 f'result: {float_val:.{size}}' #=> 'result: 0.1235'
注意点
f-strings記法では、バックスラッシュ(\)を入れてはいけません。一番最初にあげた例だと、次のように書くことができそうですが、SyntaxErrorが帰ってきます。
f'my name is {name}. I am {age} year\'s old' # => SyntaxError: f-string expression part cannot include a backslash