Python None Comparison: Bila Menggunakan "is" vs. ==
Apabila bekerja dengan nilai None dalam Python, pembangun sering menggunakan kedua-dua "adalah" dan "=" untuk perbandingan. Walaupun kedua-dua pendekatan adalah sah dari segi sintaksis, pilihan yang disyorkan bergantung pada tujuan perbandingan yang dimaksudkan.
Secara amnya, "adalah" diutamakan apabila menyemak identiti objek, bermakna sama ada dua pembolehubah merujuk kepada objek yang sama dalam ingatan . Sebaliknya, "==" menyemak kesamaan, yang boleh berbeza-beza berdasarkan pelaksanaan objek.
Pertimbangkan kelas tersuai berikut yang mengatasi kaedah eq untuk menentukan kesetaraan secara berbeza daripada identiti objek:
class Negator(object): def __eq__(self,other): return not other thing = Negator() print(thing == None) # True print(thing is None) # False
Dalam contoh ini, "==" mengembalikan Benar kerana kaedah eq Negator mengatasi kelakuan lalai. Walau bagaimanapun, "is" mengembalikan Palsu kerana kedua-dua pembolehubah tidak merujuk kepada objek yang sama.
Apabila berurusan dengan kelas tersuai yang identiti objek tidak kritikal, "==" ialah pilihan yang sesuai untuk menyemak kesaksamaan. Sebagai contoh, jika anda ingin membandingkan kandungan dua senarai, anda akan menggunakan "==":
lst = [1,2,3] lst == lst[:] # This is True since the lists are "equivalent" lst is lst[:] # This is False since they're actually different objects
Sebaliknya, jika anda ingin menyemak secara khusus sama ada dua pembolehubah menunjuk ke objek yang sama dalam memori, "is" ialah pengendali perbandingan pilihan. Ini amat penting apabila bekerja dengan objek boleh ubah, seperti kamus atau senarai, yang menukar satu kejadian boleh menjejaskan yang lain jika ia adalah objek yang sama:
a = [1, 2, 3] b = a b.append(4) print(a, b) # Output: [1, 2, 3, 4], [1, 2, 3, 4] c = [1, 2, 3] d = c d is c # True (same object in memory)
Atas ialah kandungan terperinci Python Tiada Perbandingan: Bilakah Saya Harus Menggunakan 'is' vs. '=='?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!