এই পাইথন কোড ভিজ্যুয়ালাইজার অনুসারে পাইথন স্ট্রিংগুলি স্তূপে বরাদ্দ করা হয় এবং গাদা নয়।
কেন? আমি ভেবেছিলাম সেগুলি জাভার সাথে সমান হবে যেখানে স্ট্রিংগুলি হিপগুলিতে বরাদ্দ করা হয়।
এই পাইথন কোড ভিজ্যুয়ালাইজার অনুসারে পাইথন স্ট্রিংগুলি স্তূপে বরাদ্দ করা হয় এবং গাদা নয়।
কেন? আমি ভেবেছিলাম সেগুলি জাভার সাথে সমান হবে যেখানে স্ট্রিংগুলি হিপগুলিতে বরাদ্দ করা হয়।
উত্তর:
সেই ভিজ্যুয়ালাইজার স্ট্যাকের স্ট্রিং ডেটা দেখাচ্ছে না। এটি কল স্ট্যাকের অংশ হিসাবে হিপ ডেটার স্থানীয় রেফারেন্সগুলি দেখাচ্ছে । এটি জাভা-র সাথে খুব অনুরূপ যেখানে String
রেফারেন্সগুলি স্থানীয় ভেরিয়েবল যা গাদাতে থাকা আসল String
বস্তুগুলিকে নির্দেশ করে ।
ভিজ্যুয়ালাইজার যেকোন প্রকারের উপস্থাপনা সরলকরণের জন্য এটি যত্নবান করে তোলে। পাইথনের কোনও প্রদত্ত বাস্তবায়নে "পাইথন স্ট্রিংগুলি স্ট্যাকের উপরে বরাদ্দ করা হয়" তা বোঝায় না।
গ্রেগ কি তার উত্তরে বলেছে, স্তূপে স্ট্রিং বরাদ্দ করা হয়?
ভিজ্যুয়ালাইজারটি "ফ্রেম" অংশে কিছু অবজেক্ট প্রদর্শন করার জন্য চয়ন করেছেন, যা আমার কাছে ভুল বলে মনে হচ্ছে। ভাগ্যক্রমে, অজগর শেখার কারও পক্ষে এর খুব কম প্রভাব পড়ে, যেহেতু আক্রান্ত বস্তুগুলি (ইন্ট, স্ট্রিং) অপরিবর্তনীয়। সুতরাং প্রভাব সম্পর্কে যুক্তি এখনও সম্ভব।
তবে এটি মিথ্যা ধারণা দেয় যে স্ট্রিংগুলি মেমরিতে নকল করা হয় যখন আপনি এই জাতীয় কাজগুলি করেন:
x = "hello"
y = x