Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa ID Rentetan Abadi Nampak Berubah dalam Python 2.7?
Dalam Python 2.7, gelagat ID rentetan boleh membingungkan. Walaupun rentetan tidak boleh diubah, ID mereka nampaknya berubah dari semasa ke semasa. Artikel ini meneroka sebab di sebalik tingkah laku ini.
Id Interning dalam Python
CPython tidak melatih semua rentetan secara lalai. Walau bagaimanapun, rentetan yang memenuhi kriteria tertentu boleh dimasukkan menggunakan fungsi sys.intern() atau panggilan intern_string_constants() fungsi PyCode_New. Internment memastikan bahawa berbilang kejadian rentetan yang sama dalam pangkalan kod menggunakan objek yang sama.
String yang layak untuk latihan termasuk:
Menukar ID
Jika rentetan tidak layak untuk latihan, IDnya akan terus berubah. Ini kerana Python bebas untuk menggunakan semula lokasi memori untuk rentetan baharu, membawa kepada ID berbeza untuk literal yang sama.
Penggunaan Interning dan Rentetan
Gelagat ID bergantung tentang cara rentetan digunakan:
Concatenating Strings
Concatenating Strings juga mempengaruhi ID. Rentetan yang digabungkan dalam had pengoptimum boleh membawa kepada rentetan yang diinternet, menghasilkan ID yang sama untuk rentetan yang digabungkan.
Kesimpulan
ID rentetan tidak boleh ubah dalam Python 2.7 ialah tidak selalu sama disebabkan oleh mekanisme interning dan penggunaan semula ingatan. Memahami faktor ini membantu menjelaskan ketidakkonsistenan yang jelas dalam ID rentetan.
Atas ialah kandungan terperinci Mengapa ID Rentetan Abadi Nampak Berubah dalam Python 2.7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!