Bazı dosyalar oluşturmak için şablon dizeleri kullanıyorum ve bu amaç için yeni f-dizelerinin kısa olmasını seviyorum, önceki şablon kodumu şunun gibi bir şeyden azaltmak için:
template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
print (template_a.format(**locals()))
Şimdi bunu doğrudan değişkenleri değiştirerek yapabilirim:
names = ["foo", "bar"]
for name in names:
print (f"The current name is {name}")
Bununla birlikte, bazen şablonun başka bir yerde tanımlanması mantıklıdır - kodda daha yukarıda veya bir dosyadan veya başka bir şeyden içe aktarılmış. Bu, şablonun, içinde biçimlendirme etiketleri bulunan statik bir dize olduğu anlamına gelir. Yorumlayıcıya dizeyi yeni bir f-dizesi olarak yorumlamasını söylemek için dizeye bir şey olması gerekir, ancak böyle bir şey olup olmadığını bilmiyorum.
.format(**locals())
Çağrıyı kullanmaktan kaçınmak için bir dizge getirmenin ve onu bir f-dizesi olarak yorumlamanın bir yolu var mı ?
İdeal olarak, böyle kodlayabilmeyi istiyorum ... ( magic_fstring_function
anlamadığım kısım nereden geliyor):
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)
... bu istenen çıktıyla (dosyayı iki kez okumadan):
The current name is foo
The current name is bar
... ancak aldığım gerçek çıktı:
The current name is {name}
The current name is {name}
f
ip ile yapamazsın . Birf
dizge veri değildir ve kesinlikle bir dizge değildir; bu kod. (dis
Modülle kontrol edin .) Kodun daha sonra değerlendirilmesini istiyorsanız, bir işlev kullanırsınız.