मैं "प्रोग्रामेटिक" तरीके से ग्लोबल्स को परिभाषित करना चाहता हूं। मुझे क्या करना चाहते करने के लिए कुछ इसी तरह होगा:प्रोग्रामेटिक रूप से वैश्विक (मॉड्यूल) चर सेट कैसे करें?
definitions = {'a': 1, 'b': 2, 'c': 123.4}
for definition in definitions.items():
exec("%s = %r" % definition) # a = 1, etc.
विशेष रूप से, मैं एक मॉड्यूल fundamentalconstants
कि चर fundamentalconstants.electron_mass
के रूप में पहुँचा जा सकता है, आदि, जहां सभी मूल्यों एक फ़ाइल को पार्स के माध्यम से प्राप्त कर रहे हैं (इसमें बनाना चाहते हैं इसलिए "प्रोग्रामेटिक" तरीके से असाइनमेंट करने की आवश्यकता है)।
अब, ऊपर exec
समाधान काम करेगा। लेकिन मैं इसके साथ थोड़ा असहज हूं, क्योंकि मुझे डर है कि exec
मॉड्यूल ग्लोबल्स सेट करने के लक्ष्य को प्राप्त करने का सबसे साफ तरीका नहीं है।
+1, चूंकि 'ग्लोबल्स()' वास्तव में संशोधित किया जा सकता है (http://stackoverflow.com/questions/4859217/programmatically-creating-variables-in-python/4859312#4859312)। – EOL
युक्ति: निश्चित रूप से ऊपर उल्लिखित ईओएल के उत्तर को पढ़ें। –
एक और अच्छा मुद्दा सामने आया है कि 'ग्लोबल्स()' में परिवर्तन बिना त्रुटि के बने रहेंगे, लेकिन 'स्थानीय() 'के साथ ऐसी कोई गारंटी नहीं है। – DuckPuncher