Nuances of Python's "is" Operator: Object Identity vs. Value Equality
The "is" operator dalam Python telah menjadi sumber kekeliruan bagi banyak pemaju. Walaupun ia kelihatan menipu untuk membandingkan nilai pembolehubah, ia sebenarnya menilai identiti objek. Untuk memahami konsep ini, mari kita mendalami sifat pengendali "adalah".
Identiti Objek lwn. Kesaksamaan Nilai
Dalam Python, pembolehubah mewakili rujukan kepada objek dalam ingatan. Pengendali "adalah" menyemak sama ada dua pembolehubah merujuk kepada objek tepat yang sama, tanpa mengira nilainya. Sebaliknya, pengendali "==" membandingkan nilai objek yang ditunjuk oleh dua pembolehubah.
Pertimbangkan coretan kod berikut:
x = [1, 2, 3] y = [1, 2, 3] print(x is y) # False
Dalam contoh ini, "x " dan "y" ialah dua pembolehubah berasingan yang diberikan kepada senarai dengan nilai yang sama. Walau bagaimanapun, pengendali "is" mengembalikan Palsu kerana "x" dan "y" tidak menghala ke objek yang sama dalam ingatan.
Fungsi "id()"
Untuk lebih memahami konsep identiti objek, kita boleh menggunakan fungsi "id()". Fungsi ini mengembalikan pengecam unik objek dalam ingatan. Sebagai contoh, jika kita mencetak pengecam "x" dan "y" menggunakan kod berikut:
print(id(x)) print(id(y))
Kami akan melihat bahawa "x" dan "y" mempunyai pengecam yang berbeza, mengesahkan bahawa ia adalah berasingan objek dalam ingatan.
Menetapkan Semula Pembolehubah
Jika kita menetapkan semula "y" kepada "x", kedua-dua pembolehubah kini akan menunjuk ke objek yang sama:
x = [1, 2, 3] y = [1, 2, 3] y = x print(x is y) # True
Dalam kes ini, kedua-dua "x" dan "y" merujuk objek asas yang sama, dan dengan itu pengendali "is" mengembalikan True .
Kesimpulan
Adalah penting untuk mengingati perbezaan antara identiti objek dan kesamaan nilai dalam Python. Operator "is" menilai identiti objek, manakala operator "==" membandingkan nilai objek. Pemahaman ini penting untuk mengelakkan ralat logik apabila bekerja dengan pembolehubah dan objek dalam kod Python.
Atas ialah kandungan terperinci Operator 'adalah' Python: Identiti Objek atau Kesamaan Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!