Python Tiada Perbandingan: Bilakah Saya Harus Menggunakan 'is' vs. '=='?

Susan Sarandon
Lepaskan: 2024-11-11 14:01:03
asal
746 orang telah melayarinya

Python None Comparison: When Should I Use

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

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

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

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!

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