In [5]:
price = 100 # 値段
amount = 10 # 個数
print(f"一つ{price}円のりんごを{amount}個買うと{price*amount}円になります。")
f文字列を導入した当時のPythonには実装上の制約があり、f文字列の式のなかでは "\" 記号を使えないなどの制限がありました。また、本来、f文字列のようなPythonの文法は、一種の BNF記法で定義 されます。しかし、f文字列については、きちんとした文法として記述できず、文章であいまいに説明されているだけでした。
しかし、Python3.9で導入された PEGパーザ によって不要な制約から解放され、PEP 701 で f文字列内でもPythonの式と同等の記述ができるようになりました。従来のf文字列ではPythonの文法の一部しかサポートしていませんでしたが、3.12からはほとんど同じ記述ができるようになりました。
Python3.12では次のような記述が可能になりました。
クオート文字のネスト¶
f文字列全体のクオート文字と同じクオート文字を、式の中で使えるようになりました。
f"aはasciiコードで{hex(ord("a"))}"
f'aはasciiコードで{hex(ord('a'))}'
f"{f"{f"{"f文字列ネストし放題!"}"}"}"
\と改行¶
式の中で \
や改行が使えるようになりました。
f"{'\n'}"
f"{
1+1
}"
コメント¶
式の中でコメントが使えるようになりました。
f"{
1+1 # 1行目
+2+2 # 2行目
}"