मैं इसे बहुत उपयोगी रनटाइम के दौरान नए चर बना सकते हैं और बाद में प्रसंस्करण के लिए परिणामों का एक शब्दकोश बनाने के लिए, यानी एक फ़ाइल में लिखने के लिए सक्षम होने के लिए लगता है एक स्ट्रिंग आवंटित करने के लिए:पायथन: का प्रयोग वार्स() एक चर
myDict = {}
for i in range (1,10):
temp = "variable"+str(i)
vars()[temp] = myFunctionThatReturnsData() # variable1= data1, variable2 = data2,etc.
myDict[temp] = vars(temp)
जो शब्दकोश प्रविष्टि बनाता है [परिणाम 1: डेटा 1] जिसे मैं अपने डिक्ट [परिणाम 1] के साथ कॉल कर सकता हूं। मैं वास्तव में समझने के बिना वर्स() का उपयोग कर रहा हूं कि मैं क्या कर रहा हूं। (?) मैं इसे vars()
स्थानीय चर के साथ एक शब्दकोश रिटर्न लेते हैं, और
वार्स() [x] y =
[x: y] की एक नई प्रविष्टि शब्दकोश बनाता है?
मेरे पास एक स्क्रिप्ट है जहां मैं {इनपुट 1: डेटा 1, इनपुट 2: डेटा 2} के साथ तैयार एक शब्दकोश में पास करता हूं, और मैं इस विधि का उपयोग सभी मानों के माध्यम से फिर से करने, सभी परिणामों को स्टोर करने और इसे फ़ाइल में आउटपुट करने के लिए करता हूं। कोड का यह बिट एक वर्ग के भीतर एक समारोह के अंदर है, और काम कर रहा है।
भ्रम की मेरे स्रोत है कि मैं कैसे स्थानीय लोगों पर विभिन्न पदों() के साथ गड़बड़ नहीं किया जाना चाहिए पढ़ा है है, और कैसे वार्स() बराबर (?) स्थानीय लोगों(), या वैश्विक() करने के लिए है ..
तो मेरे सवाल है (कम से कम) दो गुना:
1. क्या वास्तव में वार्स(), करता है या विशेष रूप से, वार्स() [x] = y करते हैं,
गुंजाइश 2.What इस शब्दकोश का है (मुझे क्या ध्यान रखना चाहिए क्योंकि मैं बड़े प्रोग्राम लिखता हूं
3. यह अच्छा प्रोग्रामिंग है अभ्यास।
अग्रिम धन्यवाद!
मुझे लगता है कि 'vars() [' x '] = 4' और 'x = 4' वास्तव में केवल कुछ समय के बराबर हैं। यदि आप इसे किसी फ़ंक्शन में करते हैं, और 'x' कहीं और सेट नहीं करते हैं, और फ़ंक्शन को कंपाइलर द्वारा अनुकूलित किया जाता है, तो फ़ंक्शन में बाद में' x' का सामान्य लुकअप (यानी, 'y = x + 2') जीता काम नहीं करता मुझे लगता है कि कंपाइलर कैश जो चर देख सकते हैं (संभावित रूप से संकलन समय पर परिभाषित किए गए थे), और इस तरह के शेंगेनिगन को ध्यान में रखते हैं। यदि आप अपने फ़ंक्शन में निष्पादन कथन जोड़ते हैं, तो संकलक फ़ंक्शन को अनुकूलित करने का प्रयास नहीं करेगा। –
विचारशील उत्तर के लिए धन्यवाद, क्रम में डेटाम के लिए: फ़ंक्शन (डेटाम) बहुत उपयोगी लगता है। यहां बहुत कुछ है जो मैंने आज सीखा, धन्यवाद! – PPTim
उस निर्माण पर अधिक जानकारी प्राप्त करने के लिए, "पायथन इटरेटर्स" देखें – jcdyer