Saya menggunakan string template untuk menghasilkan beberapa file dan saya menyukai keringkasan f-string baru untuk tujuan ini, untuk mengurangi kode template saya sebelumnya dari sesuatu seperti ini:
template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
print (template_a.format(**locals()))
Sekarang saya bisa melakukan ini, langsung mengganti variabel:
names = ["foo", "bar"]
for name in names:
print (f"The current name is {name}")
Namun, terkadang masuk akal untuk menetapkan template di tempat lain - lebih tinggi dalam kode, atau diimpor dari file atau sesuatu. Artinya, template adalah string statis dengan tag pemformatan di dalamnya. Sesuatu harus terjadi pada string untuk memberi tahu penerjemah untuk menafsirkan string sebagai f-string baru, tetapi saya tidak tahu apakah ada hal seperti itu.
Apakah ada cara untuk memasukkan string dan menafsirkannya sebagai f-string untuk menghindari penggunaan .format(**locals())
panggilan?
Idealnya saya ingin dapat membuat kode seperti ini ... (di magic_fstring_function
mana bagian yang tidak saya mengerti masuk):
template_a = f"The current name is {name}"
# OR [Ideal2] template_a = magic_fstring_function(open('template.txt').read())
names = ["foo", "bar"]
for name in names:
print (template_a)
... dengan keluaran yang diinginkan ini (tanpa membaca file dua kali):
The current name is foo
The current name is bar
... tapi keluaran sebenarnya yang saya dapatkan adalah:
The current name is {name}
The current name is {name}
f
tali. Sebuahf
string tidak data, dan itu tentu tidak string; itu kode. (Periksa dengandis
modul.) Jika Anda ingin kode dievaluasi di lain waktu, Anda menggunakan fungsi.