মন্তব্যে আমি কীভাবে একটি লুপের জন্য অব্যবহৃত ভেরিয়েবল ঘোষণা করতে পারি? (মন্তব্য আকারের বাইরে)
পাইথন তৈরি বস্তুর জন্য একই রেফারেন্স বজায় রাখে। (নির্বিশেষে নির্বিশেষে), উদাহরণস্বরূপ,
In [1]: i = 1
In [2]: j = 1
In [3]: id(i)
Out[3]: 142671248
In [4]: id(j)
Out[4]: 142671248
আপনি, আমি এবং জে উভয়ই দেখতে পাচ্ছেন, মেমরিতে একই বস্তুর উল্লেখ করুন happens যখন আমরা একটি অচল পরিবর্তনশীলটির মান পরিবর্তন করি তখন কী হয়।
In [5]: j = j+1
In [6]: id(i)
Out[6]: 142671248
In [7]: id(j)
Out[7]: 142671236
আপনি দেখতে পাচ্ছেন যে জে এখন একটি নতুন অবস্থান নির্দেশ করতে শুরু করে (যেখানে ২ টি সঞ্চিত রয়েছে) এবং আমি এখনও সেই অবস্থানটির দিকে নির্দেশ করি যেখানে 1 টি সঞ্চিত রয়েছে। মূল্যায়ন করার সময়,
j = j+1
মানটি 142671248 থেকে গণনা করা হয়েছে, গণনা করা হয়েছে (যদি ইতিমধ্যে ক্যাশে না করা হয়), এবং একটি নতুন স্থানে 142671236 স্থাপন করা হয়। জে নতুন অবস্থানে দেখানোর জন্য তৈরি করা হয়েছে। সরল পদে প্রতিবার একটি নতুন অনুলিপি পরিবর্তনযোগ্য পরিবর্তনশীল পরিবর্তিত হয়।
পরিবর্তন
মিউটেবল অবজেক্টস এক্ষেত্রে কিছুটা আলাদা কাজ করে। যখন মান দ্বারা নির্দেশিত
In [16]: a = []
In [17]: b = a
In [18]: id(a)
Out[18]: 3071546412L
In [19]: id(b)
Out[19]: 3071546412L
A এবং b উভয়ই একই স্মৃতি অবস্থানের দিকে নির্দেশ করে।
In [20]: a.append(5)
একটি দ্বারা নির্দেশিত মেমরি অবস্থান পরিবর্তন করা হয় is
In [21]: a
Out[21]: [5]
In [22]: b
Out[22]: [5]
In [23]: id(a)
Out[23]: 3071546412L
In [24]: id(b)
Out[24]: 3071546412L
A এবং b উভয়ই এখনও একই মেমরির অবস্থানটির দিকে নির্দেশ করে। অন্য কথায়, পরিবর্তনীয় ভেরিয়েবলগুলি পরিবর্তনশীল দ্বারা চিহ্নিত একই মেমরি অবস্থানের পরিবর্তিত হয়, পরিবর্তিত পরিবর্তনশীল ক্ষেত্রে যেমন ভেরিয়েবল দ্বারা নির্দেশিত মানের একটি অনুলিপি তৈরির পরিবর্তে।