Wednesday 15 September 2010

python - How to rebind names in outer function? -


  & gt; & gt; & gt; Def QQ (): ... a = 0 ... def QQQ (): ... वैश्विक ए ... a + = 1 ... QQQ () ... & gt; & gt; & gt; QQ () नामः त्रुटि: वैश्विक नाम 'ए' परिभाषित नहीं है   

ऐसा प्रतीत होता है कि वैश्विक इस परिदृश्य में काम नहीं करता है 1-तत्व सूची चाल के अलावा, मैं और क्या कर सकता हूं?

यदि आप अजगर का उपयोग कर रहे हैं 3.x, आप इसका उपयोग कर सकते हैं:

  & gt; & gt; & gt; Def QQ (): ... a = 0 ... def QQQ (): ... nonlocal a ... a + = 1 ... QQQ () ... वापस एक ... & gt; & gt; & gt ; QQ () 1   

यदि आप पायथन 2.x का उपयोग कर रहे हैं, तो आप ऐसा नहीं कर सकते। यही कारण है कि nonlocal जोड़ा गया था। तो, आपको 1-तत्व सूची चाल की तरह किसी भी प्रकार के अस्थायी आवरण का उपयोग करना होगा। *

सभी धमाकेदार विवरणों को बताता है (इसमें शामिल है कि क्यों पायथन "क्लासिक स्टैटिक नेस्टेड स्क्रॉपिंग" डिफ़ॉल्ट रूप से नहीं करता है , और इसके बारे में आपको स्पष्ट होना ज़रूरी है)।


* या अपग्रेड 3.x, बिल्कुल। जब भी आप खुद को पूछते हैं कि कैसे गैर-बोकलों को बाँध लें, एक अन्य जनरेटर को प्रतिनिधि बनाएं, पूरी तरह से योग्य श्रेणी के नाम प्राप्त करें, कीवर्ड-केवल पैरामीटर निर्दिष्ट करें, एक चर-लंबाई इरेटरेटर खोलें, लेकिन अंतिम मान को अलग से कैप्चर करें या 3 में तुच्छ कुछ भी। एक्स लेकिन 2.x में दर्दनाक, यह अपने आप को पुनः पूछने लायक है कि क्या यह नवीनीकृत करने का समय है।

No comments:

Post a Comment