Rumah > Artikel > pembangunan bahagian belakang > Mengapa Tuple Kosong, Set dan Senarai Berkongsi ID yang Sama dalam CPython?
Mengapa ID Tuple Kosong, Set dan Senarai Kekal Sama dalam CPython
Dalam CPython, tupel kosong, set dan senarai berkongsi ID yang sama secara tidak disangka-sangka. Ini bertentangan dengan gelagat objek boleh ubah, di mana setiap tika mempunyai ID unik.
Sebab bagi gelagat ini terletak pada pengalokasi memori CPython. Apabila penterjemah Python mencipta tuple atau senarai kosong, ia memperuntukkan blok kecil memori. Fungsi id kemudian mengembalikan alamat blok memori ini, yang sama untuk semua tupel atau senarai kosong.
Walaupun kamus juga boleh diubah, tingkah lakunya berbeza kerana memerlukan lebih banyak ingatan. Apabila mencipta kamus kosong baharu, blok memori unik diperuntukkan dan fungsi id mengembalikan alamat blok ini.
Untuk menggambarkan konsep ini, mari kita laksanakan kod Python yang menunjukkan konsistensi ID untuk tupel kosong dan lists:
<code class="python">tuple1 = () tuple2 = () id1 = id(tuple1) id2 = id(tuple2) print(id1 == id2) # Output: True</code>
Ini menunjukkan bahawa berbilang tupel kosong mempunyai ID yang sama, walaupun ia adalah objek yang berasingan.
Selain itu, ID set atau senarai kosong kekal sama walaupun selepas memberikannya kepada pembolehubah dan kemudian memanggil id(). Ini kerana objek kosong awal masih hidup dan mempunyai lokasi memori yang sama.
Ringkasnya, ID objek dalam CPython hanya unik untuk sepanjang hayat objek. Setelah objek dimusnahkan, blok memori yang sama boleh digunakan semula untuk objek yang berbeza, menghasilkan ID pendua.
Atas ialah kandungan terperinci Mengapa Tuple Kosong, Set dan Senarai Berkongsi ID yang Sama dalam CPython?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!