Rumah >pembangunan bahagian belakang >Tutorial Python >Perbandingan Rentetan Python: Bilakah `==` Berbeza Daripada `is`?
Menyelidiki Percanggahan Perbandingan Rentetan: '==' vs 'is'
Perbuatan membandingkan rentetan menggunakan sama ada '== ' atau 'adalah' kadangkala boleh menghasilkan hasil yang berbeza. Ini menimbulkan persoalan mengapa jurang ini wujud.
Dua pembolehubah rentetan mungkin mempunyai nilai yang sama, namun 's1 == s2' secara konsisten mengembalikan Benar, manakala 's1 ialah s2' kadangkala mengembalikan Salah.
Apabila ditafsirkan dalam Python, perbandingan serupa berjaya:
>>> s1 = 'text' >>> s2 = 'text' >>> s1 is s2 True
Untuk memahami fenomena ini, adalah penting untuk membezakan antara ujian identiti ('adalah') dan ujian kesaksamaan ('==').
Dalam contoh yang disediakan, perkara yang berlaku direplikasi dalam penterjemah seperti berikut:
>>> a = 'pub' >>> b = ''.join(['p', 'u', 'b']) >>> a == b True >>> a is b False
Perbezaan itu timbul kerana 'adalah' membandingkan identiti objek (iaitu, alamat memori), manakala '==' membandingkan nilainya. Dalam senario di atas, 'a' dan 'b' mempunyai nilai yang sama tetapi wujud secara berasingan dalam ingatan.
Oleh itu, logik bahawa 'a ialah b' akan menilai kepada Palsu kerana ia adalah objek yang berbeza, walaupun kandungannya sejajar. Pada dasarnya, 'a ialah b' adalah serupa dengan 'id(a) == id(b)'.
Atas ialah kandungan terperinci Perbandingan Rentetan Python: Bilakah `==` Berbeza Daripada `is`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!