Bir for döngüsünde kullanılmayan bir değişkeni bildirmekle nasıl başa çıkabilirim? (Yorum boyutu tükendi)
Python, oluşturulan nesne için aynı referansı korur. (değişebilirlikten bağımsız olarak), örneğin,
In [1]: i = 1
In [2]: j = 1
In [3]: id(i)
Out[3]: 142671248
In [4]: id(j)
Out[4]: 142671248
Hem i hem de j nin bellekte aynı nesneye başvurduğunu görebilirsiniz. Bir değişmez değişkenin değerini değiştirdiğimizde ne olur.
In [5]: j = j+1
In [6]: id(i)
Out[6]: 142671248
In [7]: id(j)
Out[7]: 142671236
Şimdi j'nin yeni bir konumu göstermeye başladığını görebilirsiniz (2'nin saklandığı yer) ve i hala 1'in depolandığı konumu gösteriyor. Değerlendirirken,
j = j+1
Değer 142671248'den alınır, hesaplanır (önceden önbelleğe alınmamışsa) ve 142671236 yeni bir konuma yerleştirilir. J, yeni konumu gösterecek şekilde yapılır. Daha basit bir ifadeyle, değişmez bir değişken her değiştirildiğinde yeni bir kopya oluşturulur.
Değişkenlik
Değişken nesneler bu açıdan biraz farklı davranır. Değerin işaret ettiği zaman
In [16]: a = []
In [17]: b = a
In [18]: id(a)
Out[18]: 3071546412L
In [19]: id(b)
Out[19]: 3071546412L
Hem a hem de b aynı hafıza konumuna işaret eder.
In [20]: a.append(5)
A ile gösterilen bellek konumu değiştirildi.
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
Hem a hem de b, hala aynı hafıza konumuna işaret ediyor. Başka bir deyişle, değişebilen değişkenler, değişmez değişken durumunda olduğu gibi, değişken tarafından gösterilen değerin bir kopyasını yapmak yerine, değişken tarafından gösterilen aynı bellek konumunda hareket eder.