Rumah >pembangunan bahagian belakang >Tutorial Python >Bilakah Operator Do `is` dan `==` Mengembalikan Keputusan Berbeza dalam Python?
Memahami Operator "adalah"
Walaupun mempunyai nilai yang sama, apabila menggunakan pengendali "adalah", salah tanggapan yang lazim adalah untuk menganggap ia membandingkan nilai pembolehubah. Walau bagaimanapun, pengendali ini sebenarnya menilai sama ada dua pembolehubah merujuk kepada objek yang sama.
Dalam contoh anda, kod berikut:
x = [1, 2, 3] y = [1, 2, 3]
boleh menyebabkan anda mengharapkan pengendali "adalah" untuk kembali Betul, tetapi ia mengembalikan Salah:
print(x is y) # False
Ini kerana x dan y, walaupun berkongsi nilai yang sama, dianggap sebagai dua senarai yang berbeza. Ia adalah objek berbeza, seperti yang didedahkan oleh pengecam uniknya:
print(id(x)) print(id(y)) # Different identifiers indicate different objects
Untuk membandingkan nilai, gunakan pengendali "==" sebaliknya:
print(x == y) # True for equal values
Mengubah suai salah satu senarai tidak akan mempengaruhi yang lain, mengesahkan ia adalah objek berasingan:
x[0] = 4 print(y) # [1, 2, 3] (Unchanged)
Menetapkan y kepada x mencipta rujukan baharu yang menunjuk ke objek senarai yang sama:
x = y print(id(x)) print(id(y)) # Same identifiers after assignment print(x is y) # True (Same object)
Ingat, pengendali "is" menguji identiti objek, manakala pengendali "==" membandingkan nilai. Gunakannya dengan bijak untuk mengelakkan kemungkinan kekeliruan dalam memahami tingkah laku rujukan pembolehubah.
Atas ialah kandungan terperinci Bilakah Operator Do `is` dan `==` Mengembalikan Keputusan Berbeza dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!