मैं कुछ फ़ाइलों को उत्पन्न करने के लिए टेम्प्लेट स्ट्रिंग का उपयोग कर रहा हूं और मुझे इस उद्देश्य के लिए नए एफ-स्ट्रिंग्स की संक्षिप्तता पसंद है, मेरे पिछले टेम्पलेट कोड को कुछ इस तरह से कम करने के लिए:
template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
print (template_a.format(**locals()))
अब मैं यह कर सकता हूँ, सीधे चर की जगह:
names = ["foo", "bar"]
for name in names:
print (f"The current name is {name}")
हालांकि, कभी-कभी यह समझ में आता है कि टेम्पलेट को कहीं और परिभाषित किया गया है - कोड में उच्चतर, या फ़ाइल या किसी चीज़ से आयात किया गया। इसका मतलब यह है कि टेम्प्लेट एक स्थिर स्ट्रिंग है जिसमें इसमें टैगिंग प्रारूपित हैं। नए एफ-स्ट्रिंग के रूप में स्ट्रिंग की व्याख्या करने के लिए दुभाषिया को बताने के लिए स्ट्रिंग के साथ कुछ होना होगा, लेकिन मुझे नहीं पता कि क्या ऐसी कोई चीज है।
क्या किसी स्ट्रिंग में लाने का कोई तरीका है और क्या उसने .format(**locals())
कॉल का उपयोग करने से बचने के लिए एक एफ-स्ट्रिंग के रूप में व्याख्या की है ?
आदर्श रूप में मैं इस तरह कोड करने में सक्षम होना चाहता हूं ... (जहां magic_fstring_function
मुझे समझ में नहीं आता है वह भाग आता है):
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)
... इस वांछित आउटपुट के साथ (फ़ाइल को दो बार पढ़े बिना):
The current name is foo
The current name is bar
... लेकिन मुझे जो वास्तविक उत्पादन मिलता है वह है:
The current name is {name}
The current name is {name}
f
स्ट्रिंग के साथ ऐसा नहीं कर सकते । एकf
स्ट्रिंग डेटा नहीं है, और यह निश्चित रूप से एक स्ट्रिंग नहीं है; यह कोड है। (इसेdis
मॉड्यूल के साथ जांचें ।) यदि आप चाहते हैं कि कोड का मूल्यांकन बाद में किया जाए, तो आप एक फ़ंक्शन का उपयोग करते हैं।