Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah yang Membezakan Kesamaan \'is\' Python untuk Rentetan daripada Ujian Kesamaan Tradisional?
Memahami Selok-belok Kata Kunci 'is' Python untuk Kesamaan Rentetan
Kata kunci 'is' Python menawarkan cara unik untuk membandingkan rentetan. Walau bagaimanapun, tidak seperti ujian kesamaan tradisional, 'is' beroperasi pada identiti objek dan bukannya kesamaan kandungan. Perbezaan halus ini sering membawa kepada kekeliruan dan memerlukan navigasi yang teliti.
Peranan Interning
Faktor utama dalam memahami cara 'adalah' berfungsi untuk rentetan terletak pada konsep dari interning. Dalam Python, literal rentetan dimasukkan secara automatik. Ini bermakna bahawa berbilang rujukan kepada literal rentetan yang sama merujuk kepada objek asas yang sama dalam ingatan. Akibatnya, 'is' boleh mengembalikan True untuk dua rujukan rentetan yang menunjuk kepada literal yang sama, walaupun jika ia ditugaskan kepada pembolehubah yang berbeza.
<code class="python">s = 'str' t = 'str' s is t # True</code>
Batasan Menggantikan __is__() dan __eq__ ()
Bertentangan dengan jangkaan, mengatasi kaedah __is__() atau __eq__() dalam kelas rentetan tersuai tidak mengubah tingkah laku ujian kesamaan 'is'. 'adalah' ialah kaedah khas yang memintas kaedah yang ditindih ini dan membandingkan secara langsung alamat objek.
<code class="python">class MyString: def __init__(self, s): self.s = s def __is__(self, other): return self.s == other m = MyString('string') m is 'string' # False</code>
Implikasi dan Syor
Gelagat unik 'adalah' untuk rentetan boleh menyebabkan hasil yang tidak dijangka. Secara amnya tidak digalakkan untuk menggunakan 'adalah' untuk ujian kesamaan rentetan. Sebaliknya, gunakan operator kesaksamaan standard '==', yang membandingkan kandungan rentetan.
Ingat bahawa latihan Python digunakan pada literal rentetan. Jika anda mencipta rentetan secara dinamik atau melalui penggabungan, ia tidak akan dimasukkan ke dalam penjara dan ujian kesamaan 'adalah' akan gagal.
Kesimpulan
Memahami peranan pelatih dan batasan untuk mengatasi __is__() dan __eq__() adalah penting untuk menggunakan kata kunci 'is' dengan betul untuk kesamaan rentetan dalam Python. Dengan mematuhi amalan terbaik dan mengelakkan pergantungan yang tidak perlu pada 'adalah', anda boleh memastikan perbandingan nilai rentetan yang tepat dan konsisten.
Atas ialah kandungan terperinci Apakah yang Membezakan Kesamaan \'is\' Python untuk Rentetan daripada Ujian Kesamaan Tradisional?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!