Rentetan Python: Entiti Kekal dan Kekeliruan Tugasan
Python berbangga dengan kebolehubahan dalam rentetannya, membayangkan bahawa nilai rentetan setelah dicipta tidak boleh diubah . Walau bagaimanapun, tingkah laku membingungkan yang dihadapi dalam percubaan penyambungan rentetan menimbulkan persoalan tentang kebolehubahan ini.
Teka-teki: Mengubah Rentetan Tidak Boleh Berubah dengan Penggabungan?
Pertimbangkan coretan kod berikut:
<code class="python">a = "Dog" b = "eats" c = "treats" print(a, b, c) # Dog eats treats print(a + " " + b + " " + c) # Dog eats treats print(a) # Dog a = a + " " + b + " " + c print(a) # Dog eats treats # Surprise!</code>
Kod pada mulanya memulakan tiga rentetan, kemudian menggabungkannya dengan ruang. Apa yang mengejutkan kami, nilai perubahan selepas penugasan semula kepada hasil yang digabungkan.
Pembubaran: Penugasan Semula Pembolehubah, Bukan Mutasi Rentetan
Kunci untuk memahami tingkah laku ini terletak dalam mengiktiraf bahawa rentetan Python sememangnya tidak berubah, manakala rujukannya boleh berubah. Apabila kami menetapkan semula a dalam baris terakhir, kami tidak mengubah suai rentetan "Anjing" sedia ada. Sebaliknya, kami mencipta rentetan baharu "Dog eats treats" dan memberikan rujukannya kepada a.
The Immutable Truth Remains
Pada dasarnya, pembolehubah rentetan menyimpan alamat (atau rujukan) kepada nilai rentetan, bukan nilai itu sendiri. Kami boleh menetapkan semula pembolehubah kepada alamat yang berbeza, tetapi nilai rentetan pada alamat tersebut kekal tidak boleh diubah.
Oleh itu, walaupun ia mungkin kelihatan seolah-olah kami mengubah suai rentetan dengan gabungan, kami hanya mencipta rentetan baharu dan menetapkan semula rujukan . Ketidakbolehubahan rentetan kekal utuh.
Atas ialah kandungan terperinci Bagaimanakah Penggabungan Rentetan Nampaknya Memutasi Rentetan Tidak Berubah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!