Komentar untuk Bagaimana saya bisa berkeliling mendeklarasikan variabel yang tidak digunakan dalam loop for? (Kehabisan ukuran komentar)
Python mempertahankan referensi yang sama untuk objek yang dibuat. (terlepas dari mutabilitas), misalnya,
In [1]: i = 1
In [2]: j = 1
In [3]: id(i)
Out[3]: 142671248
In [4]: id(j)
Out[4]: 142671248
Anda, dapat melihat i dan j, mengacu pada objek yang sama di memori. Apa yang terjadi, ketika kita mengubah nilai dari satu variabel yang tidak dapat diubah.
In [5]: j = j+1
In [6]: id(i)
Out[6]: 142671248
In [7]: id(j)
Out[7]: 142671236
Anda dapat melihat j sekarang mulai menunjukkan lokasi baru, (di mana 2 disimpan), dan saya masih menunjuk ke lokasi di mana 1 disimpan. Saat mengevaluasi,
j = j+1
Nilai diambil dari 142671248, dihitung (jika belum di-cache), dan diletakkan di lokasi baru 142671236. j dibuat untuk menunjuk ke lokasi baru. Dalam istilah yang lebih sederhana, salinan baru dibuat setiap kali variabel yang tidak dapat diubah diubah.
Mutabilitas
Objek yang dapat berubah bertindak sedikit berbeda dalam hal ini. Ketika nilai ditunjukkan
In [16]: a = []
In [17]: b = a
In [18]: id(a)
Out[18]: 3071546412L
In [19]: id(b)
Out[19]: 3071546412L
Baik a dan b menunjuk ke lokasi memori yang sama.
In [20]: a.append(5)
Lokasi memori yang ditunjukkan oleh a diubah.
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
Baik a dan b, masih mengarah ke lokasi memori yang sama. Dengan kata lain, variabel yang dapat berubah bertindak dari lokasi memori yang sama yang ditunjukkan oleh variabel, alih-alih membuat salinan dari nilai yang ditunjukkan oleh variabel, seperti dalam kasus variabel yang tidak dapat diubah.