Python Tiada Perbandingan: 'adalah' atau ==?

Mary-Kate Olsen
Lepaskan: 2024-11-13 02:51:02
asal
648 orang telah melayarinya

Python None Comparison:

Python None Comparison: "is" or ==?

Membandingkan pembolehubah kepada None ialah operasi biasa dalam Python. Walau bagaimanapun, anda mungkin telah melihat percanggahan dalam sintaks yang digunakan, membawa kepada persoalan sama ada untuk menggunakan "adalah" atau ==.

Secara umum, adalah disyorkan untuk menggunakan "adalah" apabila membandingkan pembolehubah kepada Tiada . Sebab untuk ini ialah "is" menyemak identiti objek, manakala == menyemak kesamaan objek. Dalam Python, hanya terdapat satu objek None, jadi membandingkan apa-apa dengan None menggunakan "is" akan sentiasa mengembalikan True jika objek tersebut adalah objek yang sama.

Sebaliknya, == menyemak kesamaan objek. Ini bermakna ia akan mengembalikan True jika kedua-dua objek adalah sama, walaupun ia bukan objek yang sama. Sebagai contoh, pertimbangkan kod berikut:

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, kelas Negator mentakrifkan kaedah eq yang mengembalikan True apabila objek tidak sama. Apabila membandingkan sesuatu dengan Tiada menggunakan ==, kaedah eq tersuai dipanggil, menghasilkan Benar. Walau bagaimanapun, apabila membandingkan menggunakan is, kita melihat bahawa ia bukan objek yang sama, mengakibatkan Palsu.

Oleh itu, jika anda menyemak dengan ketat sama ada objek adalah sama dengan Tiada (iaitu, menyemak ketiadaan), ia disyorkan untuk menggunakan "adalah". Walau bagaimanapun, jika anda menyemak kesamarataan (iaitu, menyemak sama ada dua objek mempunyai nilai yang sama), anda harus menggunakan ==.

Atas ialah kandungan terperinci Python Tiada Perbandingan: 'adalah' atau ==?. 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