【Python】文字列中の変数に値を代入する(f-strings)

【Python】文字列中の変数に値を代入する(f-strings) プログラミング

「Pythonで文字列中に変数を代入したい」
「フォーマット済み文字列リテラルとは?f-stringsとは?」

このような場合には、この記事の内容が参考となります。
この記事では、f-stringsの使い方と注意点について解説しています。

本記事の内容

  • f-strings(f文字列)の使い方
  • f-stringsの注意点

それでは、上記に沿って解説していきます。

f-strings(f文字列)の使い方

f-stringsとは、フォーマット済み文字列リテラルのことです。
以下の文字列は、f-stringsになります。

「f’先頭にfが付いている文字列を見たことありませんか?’」

先頭に「f」や「F」を付けることでf-stringsとなります。
では、そもそもフォーマット済み文字リテラルとは何なのでしょうか?

フォーマット済み文字リテラルとは、特殊な文字列のことを言います。
その特殊な文字列の中では、Pythonが機能することが可能です。

「{expression}」と書けば、その中でPythonが機能します。
具体的に見てみましょう。

まずは、タダの文字列の場合です。

hensu = '文字列'
mojiretu = 'これは{hensu}です'

print(mojiretu)

実行結果は、以下。

これは{hensu}です

普通は、こうなりますよね。
次は、「f」を先頭に付けてf-stringsにします。

hensu = '文字列'
mojiretu = f'これは{hensu}です'

print(mojiretu)

実行結果は、以下。

これは文字列です

「{expression}」の中では、変数hensuが展開されています。
expressionには、次のモノを設定できます。

  • 変数
  • 関数

式と関数を紹介しておきます。

式を設定する場合は、次のようにコーディングします。

mojiretu1 = f'式の結果は、{1+5}'
print(mojiretu1)

a = 10
b = 20
mojiretu2 = f'式の結果は、{a+b}'
print(mojiretu2)

実行した結果は、以下。

式の結果は、6
式の結果は、30

関数

関数を設定する場合は、次のようにコーディングします。

def get_result(a, b):
    result = a + b
    return result

mojiretu = f'関数の実行結果は{get_result(1, 10)}です'

print(mojiretu)

実行した結果は、以下。

関数の実行結果は11です

いろいろと設定できますが、個人的には変数以外は使わないと思います。
式や関数は、直前で変数に格納しておけばいいわけですからね。

あくまで、変数を設定することがメインとなりそうです。

以上、f-strings(f文字列)の使い方を説明しました。
次は、f-strings(f文字列)の注意点を確認します。

f-strings(f文字列)の注意点

f-stringsは、Python 3.6以降のみ利用できます。

このことは大前提となります。

PEP 498において、f-stringsへの対応が実施されました。
https://peps.python.org/pep-0498/

そうは言っても、大抵の場合は問題ないでしょう。
以下は、Python公式開発サイクルです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

現時点(2022年3月)では、Python 3.7以降がサポート対象という状況ですからね。
適切にメンテナンスしていれば、ほぼ問題なくf-stringsを利用できるでしょう。

あとは、以下を文字列に含めたい場合には工夫が必要となります。

  • 引用符「”」「’」
  • 波括弧(中括弧)「{}」

それぞれを下記で説明します。

引用符「”」「’」

結論のみ書きます。
三連引用符「”””」を使います。

これを使えば、引用符で困ることはないでしょう。

mojiretu = f"""文字列中に「"」や「'」を使いたい"""

print(mojiretu)

実行した結果は、以下。

文字列中に「"」や「'」を使いたい

波括弧(中括弧)「{}」

二重にすれば、エスケープできます。

mojiretu1 = f"文字列中に{{}}を使いたい"

print(mojiretu1)

mojiretu2 = f"文字列中に{{と}}を使いたい"

print(mojiretu2)

上記コードを実行した結果は、以下。

文字列中に{}を使いたい
文字列中に{と}を使いたい

以上、f-strings(f文字列)の注意点について説明しました。

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