सी/सी ++ में, आपके पास फ़ंक्शन के अंदर स्थानीय चर बनाने पर स्टैक में चर होते हैं।पायथन ढेर से सब कुछ बनाता है?
http://effbot.org/zone/call-by-object.htm
CLU वस्तुओं प्रक्रिया सक्रियण की स्वतंत्र रूप से मौजूद हैं। ऑब्जेक्ट्स के लिए स्पेस गतिशील स्टोरेज एरिया /.../ में सिद्धांत से आवंटित किया गया है, सभी ऑब्जेक्ट हमेशा के लिए मौजूद हैं। अभ्यास में, किसी ऑब्जेक्ट द्वारा उपयोग की जाने वाली जगह को फिर से दावा किया जा सकता है जब ऑब्जेक्ट isno किसी भी CLU प्रोग्राम के लिए अधिक सुलभ है।
क्या इसका मतलब है कि पाइथन में वस्तुएं ढेर से बनाई गई हैं (जैसे सी/सी ++ में मॉलोक में)? और वस्तुओं को तब तक हटा दिया जाता है जब उनके साथ कोई नाम नहीं है? (स्मार्ट पॉइंटर्स की तरह)?
उदाहरण:
def foo(a):
result = []
result.append(a)
return result
foo("hello")
myList = foo("bye")
तो सबसे पहले परिणाम ([]) ढेर में बनाया गया था और इसके साथ जुड़े कोई नाम नहीं है, क्योंकि वहाँ पुनः आवंटित की जाती हो गया?
यदि आपको लगता है कि आपको आवश्यकता है तो आप 'del' के रूप में 'del' का उपयोग करके मैन्युअल रूप से चीजों को हटा सकते हैं। –
यदि यह पूछने के लिए आपकी प्रेरणा यह है कि आप चाहते हैं कि आपका फ़ंक्शन हमेशा एक ही सूची का उपयोग करे, तो ध्यान दें कि आप इसे 'def foo (a, result = [])' के रूप में परिभाषित कर सकते हैं, और उसी सूची का उपयोग हर बार किया जाएगा फ़ंक्शन को कॉल करें, क्योंकि यह फ़ंक्शन परिभाषित होने पर बनाया गया है, जब यह चलाया जाता है। – geoffspear