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.
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"""{template}"""')</code>
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!