Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Penggabungan Rentetan Nampaknya Memutasi Rentetan Tidak Berubah dalam Python?

Bagaimanakah Penggabungan Rentetan Nampaknya Memutasi Rentetan Tidak Berubah dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-29 20:22:30686semak imbas

How Can String Concatenation Seem to Mutate Immutable Strings in Python?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn