Home  >  Article  >  Backend Development  >  How to Defer F-String Evaluation in Python for Static Templates?

How to Defer F-String Evaluation in Python for Static Templates?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 09:08:03458browse

How to Defer F-String Evaluation in Python for Static Templates?

Interpreting F-Strings on Demand

In Python, f-strings offer a convenient syntax for string interpolation. However, when working with static templates read from external sources or defined elsewhere in code, it may be desirable to delay the evaluation of these strings.

Deferring F-String Evaluation

To avoid the need for the .format(**locals()) call when using static templates, a Python function can be utilized. The fstr function, defined as follows, allows us to evaluate a string as an f-string:

<code class="python">def fstr(template):
    return eval(f'f&quot;&quot;&quot;{template}&quot;&quot;&quot;')</code>

Example Usage

With fstr, we can use a static template defined in a variable or read from a file and interpolate values into it. Consider the following example:

<code class="python">template_a = "The current name is {name}"
names = ["foo", "bar"]

for name in names:
    print(fstr(template_a))  # Evaluates the template with the current 'name'</code>

Output:

The current name is foo
The current name is bar

Note that since the template is evaluated at runtime, complex expressions can also be used within the curly braces, such as name.upper() * 2 in the following example:

<code class="python">template_b = "The current name is {name.upper() * 2}"

for name in names:
    print(fstr(template_b))</code>

Output:

The current name is FOOFOO
The current name is BARBAR

The above is the detailed content of How to Defer F-String Evaluation in Python for Static Templates?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn