Rumah >pembangunan bahagian belakang >Tutorial Python >Bilakah Operator Do `is` dan `==` Mengembalikan Keputusan Berbeza dalam Python?

Bilakah Operator Do `is` dan `==` Mengembalikan Keputusan Berbeza dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-12-12 14:58:21907semak imbas

When Do `is` and `==` Operators Return Different Results in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn