Menyingkap Sifat Berubah Tali Sawa: Penerokaan " " b
Walaupun kepercayaan yang telah lama dipegang bahawa rentetan Python secara semula jadi tidak berubah, pemerhatian yang pelik mencabar tanggapan ini. Apabila menggabungkan rentetan menggunakan sintaks a " " b, rentetan kelihatan mengalami perubahan. Mari kita siasat tingkah laku yang membingungkan ini.
Menyiasat Kod
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 # !!!</code>
Memahami Anomali
Mengikut pemahaman kami, rentetan Python adalah tidak berubah, melarang manipulasi langsung kandungannya. Walau bagaimanapun, kod di atas menunjukkan sebaliknya. Apabila melaksanakan baris a = a " " b " " c, rentetan yang ditunjuk oleh a nampaknya telah diubah suai, membawa kepada kekeliruan.
Merungkai Misteri
Di sinilah letak kunci untuk memahami tingkah laku ini: Rentetan Python itu sendiri kekal tidak berubah. Sebaliknya, pembolehubah a ditugaskan semula kepada objek rentetan baharu yang mengandungi kandungan bercantum.
Dalam bahagian pertama kod, pada mulanya rentetan "Anjing". Apabila kita menggabungkan rentetan menggunakan " " b, rentetan baharu dicipta dalam ingatan yang mengandungi hasil penggabungan, dalam kes ini, "Anjing makan hidangan". Walau bagaimanapun, a masih menunjuk kepada rentetan "Anjing" asal.
Apabila kita memberikan nilai a " " b " " c kepada a, ini mencipta objek rentetan baharu yang mengandungi hasil bercantum, "Dog eats treats ", dan sekarang menunjuk kepada rentetan baharu ini. Rentetan "Anjing" asal kekal tidak berubah dan masih boleh diakses dalam ingatan.
Oleh itu, mutasi jelas rentetan dalam konteks ini adalah hasil penugasan semula pembolehubah yang menunjuk ke rentetan, bukan pengubahsuaian rentetan sendiri. Rentetan Python mengekalkan sifatnya yang tidak berubah sambil memberikan fleksibiliti untuk mengubah rujukan yang menunjuk kepadanya.
Atas ialah kandungan terperinci Mengapa Rentetan Python Kelihatan Boleh Berubah Apabila Menggunakan \'a \' \' b\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!