Maison  >  Article  >  développement back-end  >  Comment pouvons-nous différer l'évaluation des chaînes F au-delà du contexte immédiat du code ?

Comment pouvons-nous différer l'évaluation des chaînes F au-delà du contexte immédiat du code ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-03 01:56:031039parcourir

How Can We Defer the Evaluation of F-Strings Beyond the Immediate Code Context?

Surmonter le dilemme de l'évaluation dans les F-Strings

Lors de la composition de fichiers à l'aide de chaînes de modèles, la concision des f-strings est très attrayante. Cependant, des difficultés apparaissent lorsque les définitions de modèles résident en dehors du contexte immédiat du code. Comment pouvons-nous différer l'évaluation des f-strings, éliminant ainsi le besoin d'appeler format(**locals()) ?

Entrez fstr(), une fonction puissante qui résout ce dilemme. Voici comment cela fonctionne :

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

Pour utiliser cette fonction, appelez simplement fstr() sur le modèle souhaité :

<code class="python">template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
    print(fstr(template_a))
# Output:
# The current name is foo
# The current name is bar</code>

Essentiellement, contrairement aux autres solutions proposées, fstr() permet des expressions plus complexes dans le modèle, y compris les appels de fonction et l'accès aux attributs :

<code class="python">template_b = "The current name is {name.upper() * 2}"
for name in names:
    print(fstr(template_b))
# Output:
# The current name is FOOFOO
# The current name is BARBAR</code>

Avec cette solution, vous pouvez efficacement reporter l'évaluation des f-strings, en préservant leurs puissantes capacités de gestion succincte et dynamique des modèles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn