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
Lepaskan: 2024-12-12 14:58:21
asal
983 orang telah melayarinya

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]
Salin selepas log masuk

boleh menyebabkan anda mengharapkan pengendali "adalah" untuk kembali Betul, tetapi ia mengembalikan Salah:

print(x is y)  # False
Salin selepas log masuk

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
Salin selepas log masuk

Untuk membandingkan nilai, gunakan pengendali "==" sebaliknya:

print(x == y)  # True for equal values
Salin selepas log masuk

Mengubah suai salah satu senarai tidak akan mempengaruhi yang lain, mengesahkan ia adalah objek berasingan:

x[0] = 4
print(y)  # [1, 2, 3] (Unchanged)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan