Are there stack based variables in Python? -


यदि मैं ऐसा करता हूं:

  def foo (): a = someObject () < / Code> 

क्या 'ए' फू को छोड़ने के तुरंत बाद नष्ट हो गया है? या क्या यह कुछ जीसी होने का इंतजार करता है?

हां और नहीं आपके द्वारा एफयू छोड़ने के बाद ऑब्जेक्ट को नष्ट कर दिया जाएगा (जब तक कि इसके बारे में कोई अन्य संदर्भ नहीं है), लेकिन यह तत्काल है या नहीं, यह कार्यान्वयन विवरण है, और अलग-अलग होगा।

CPython (मानक अजगर कार्यान्वयन), refcounting का उपयोग किया जाता है, इसलिए आइटम तुरंत नष्ट हो जाएगा। इसमें कुछ अपवाद हैं, जैसे कि जब ऑब्जेक्ट में चक्रीय संदर्भ होते हैं, या जब सम्मिलित फ्रेम में संदर्भ होते हैं (उदाहरण के लिए एक अपवाद उठाया जाता है जो फ्रेम के वेरिएबल्स के संदर्भ को बरकरार रखता है।)

इसमें हालांकि जिप्थन या आयरनपेथान जैसे implimentations, ऑब्जेक्ट को अंतिम रूप नहीं दिया जाएगा जब तक कि कचरा कलेक्टर अंदर किक नहीं करता।

इस तरह, आपको ऑब्जेक्ट के समय पर अंतिम रूप से भरोसा नहीं करना चाहिए, लेकिन यह केवल मानना ​​चाहिए कि यह हो जाएगा अंतिम संदर्भ के बाद किसी बिंदु पर नष्ट हो जाता है जब आपको वाक्यात्मक गुंजाइश के आधार पर कुछ सफाई की आवश्यकता होती है, तो स्पष्ट रूप से क्लीनअप विधि को कॉल करें, या अजगर 2.6 में नया देखें (2.5 में "__future__ आयात से__टायटेड " से उपलब्ध है)।


Comments

Popular posts from this blog

c# - PInvoke of NetUserAdd returns 24 -

NHibernate Passing Session to the Repository -

objective c - Mouse events for an NSSegmentedCell subclass? -