Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Kita Boleh Menangguhkan Penilaian F-Strings Melampaui Konteks Kod Segera?

Bagaimana Kita Boleh Menangguhkan Penilaian F-Strings Melampaui Konteks Kod Segera?

Barbara Streisand
Barbara Streisandasal
2024-11-03 01:56:03966semak imbas

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

Mengatasi Masalah Penilaian dalam F-Strings

Apabila mengarang fail menggunakan rentetan templat, kepekatan f-strings sangat menarik. Walau bagaimanapun, kesukaran timbul apabila definisi templat berada di luar konteks kod segera. Bagaimanakah kita boleh menangguhkan penilaian f-strings, menghapuskan keperluan untuk panggilan format(**locals())?

Masukkan fstr(), fungsi berkuasa yang menyelesaikan dilema ini. Begini caranya:

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

Untuk menggunakan fungsi ini, cuma panggil fstr() pada templat yang diingini:

<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>

Yang penting, tidak seperti penyelesaian lain yang dicadangkan, fstr() membenarkan ungkapan yang lebih kompleks dalam templat, termasuk panggilan fungsi dan akses atribut:

<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>

Dengan penyelesaian ini, anda boleh menangguhkan penilaian rentetan-f dengan berkesan, mengekalkan keupayaan berkuasanya untuk pengendalian templat yang ringkas dan dinamik.

Atas ialah kandungan terperinci Bagaimana Kita Boleh Menangguhkan Penilaian F-Strings Melampaui Konteks Kod Segera?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn