पाइथन स्ट्रिंग्स को स्टैक पर क्यों आवंटित किया जाता है?


9

इस पायथन कोड विज़ुअलाइज़र के अनुसार , पायथन स्ट्रिंग्स को ढेर पर आवंटित किया जाता है, न कि ढेर पर।

ऐसा क्यों है? मैंने सोचा कि वे जावा के समान होंगे जहां स्ट्रिप्स ढेर पर आवंटित किए जाते हैं।

जवाबों:


7

वह विज़ुअलाइज़र स्टैक पर स्ट्रिंग डेटा नहीं दिखा रहा है। यह कॉल स्टैक के भाग के रूप में ढेर डेटा के स्थानीय संदर्भ दिखा रहा है । यह जावा के समान है जहां Stringसंदर्भ स्थानीय चर हैं जो Stringढेर पर वास्तविक वस्तुओं को इंगित करते हैं।

विज़ुअलाइज़र किसी भी प्रकार के प्रतिनिधित्व को सरल बनाने के लिए स्वतंत्र है जो इसकी परवाह करता है। इसका अर्थ यह नहीं है कि पायथन के किसी भी कार्यान्वयन में "पायथन स्ट्रिंग्स को स्टैक पर आवंटित किया गया है"।


1

क्या ग्रेग ने अपने जवाब में कहा है, तार ढेर पर आवंटित किए गए हैं।

विज़ुअलाइज़र ने "फ्रेम" भाग में कुछ वस्तुओं को प्रदर्शित करने के लिए चुना है, जो मुझे गलत लगता है। सौभाग्य से, यह अजगर को सीखने वाले किसी व्यक्ति के लिए बहुत कम प्रभाव डालता है, क्योंकि प्रभावित वस्तुएं (इंट, स्ट्रिंग) अपरिवर्तनीय हैं। तो प्रभाव के बारे में तर्क अभी भी संभव है।

हालांकि यह गलत धारणा देता है कि जब आप चीजें करते हैं तो स्ट्रिंग्स को स्मृति में डुप्लिकेट किया जाता है:

x = "hello"
y = x
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.