Skip to main content

Operator is vs ==

Python menyediakan beberapa operator untuk membandingkan objek. Dua operator yang sering dianggap sama adalah == dan is.

Meskipun keduanya dapat digunakan dalam ekspresi kondisi, keduanya memiliki tujuan yang berbeda:

  • == digunakan untuk membandingkan nilai.
  • is digunakan untuk membandingkan identitas objek.

Memahami perbedaan keduanya penting agar tidak terjadi kesalahan ketika bekerja dengan object, terutama None, list, dictionary, dan struktur data lainnya.


== - Equality​

Operator == digunakan untuk memeriksa apakah nilai dari dua objek sama.

Contoh:

print(10 == 10)
# True

print(10 == 20)
# False

Pada struktur data seperti list, == membandingkan isi dari objek tersebut.

list_a = [1, 2, 3]
list_b = [1, 2, 3]

print(list_a == list_b)
# True

Walaupun list_a dan list_b merupakan dua objek list yang berbeda, keduanya memiliki isi yang sama.

Contoh lainnya:

print(True == 1)
# True

print(10 == 10.0)
# True

print([] == [])
# True

Untuk perbandingan nilai, gunakan ==.


is - Identity​

Operator is digunakan untuk memeriksa apakah dua variabel merujuk pada objek yang sama.

Contoh:

a = [1, 2, 3]
b = a

print(a is b)
# True

Pada contoh tersebut, b = a membuat b merujuk pada objek list yang sama dengan a.

Karena keduanya merujuk pada objek yang sama, maka:

a is b

menghasilkan True.


== vs is pada List​

Perbedaan keduanya dapat terlihat dengan jelas menggunakan dua list.

a = [1, 2, 3]
b = [1, 2, 3]

print(a == b)
# True

print(a is b)
# False

Mengapa hasilnya berbeda?

a == b memeriksa isi:

[1, 2, 3] == [1, 2, 3]

Karena isinya sama, hasilnya True.

Sedangkan a is b memeriksa identitas objek. a dan b dibuat sebagai dua objek list yang berbeda.

Sehingga:

a is b

menghasilkan False.


Contoh dengan Reference​

Perhatikan contoh berikut:

a = [1, 2, 3]
b = a

print(a == b)
# True

print(a is b)
# True

Berbeda dengan contoh sebelumnya, b tidak membuat list baru.

Ketika menulis:

b = a

variabel b merujuk ke objek yang sama dengan a.

Karena nilai dan identitasnya sama:

a == b

dan:

a is b

keduanya menghasilkan True.


is dengan None​

Salah satu penggunaan is yang paling umum adalah ketika memeriksa apakah sebuah variabel memiliki nilai None.

Contoh:

user = None

if user is None:
print("User belum tersedia")

Penggunaan:

is None

lebih tepat dibandingkan:

== None

Jadi, pola yang umum digunakan dalam Python adalah:

if value is None:
print("Tidak ada nilai")

Untuk mengecek bahwa sebuah nilai bukan None, gunakan:

if value is not None:
print("Nilai tersedia")

Jangan Menyamakan is dengan ==​

Kesalahan yang cukup umum bagi pemula adalah menggunakan is untuk semua jenis perbandingan.

Contoh:

a = [1, 2, 3]
b = [1, 2, 3]

print(a is b)

Hasilnya:

False

Jika tujuan kita adalah mengetahui apakah isi kedua list sama, gunakan:

print(a == b)

Hasilnya:

True

Jadi, pilih operator berdasarkan tujuan perbandingan.


Perbandingan​

OperatorMembandingkanPertanyaan
==Nilai"Apakah nilainya sama?"
isIdentitas objek"Apakah ini objek yang sama?"
!=Ketidaksamaan nilai"Apakah nilainya berbeda?"
is notKetidaksamaan identitas"Apakah ini bukan objek yang sama?"

Contoh Praktis​

Misalnya sebuah fungsi dapat mengembalikan None ketika data tidak ditemukan:

result = None

if result is None:
print("Data tidak ditemukan")
else:
print("Data ditemukan")

Sementara jika ingin membandingkan hasil suatu nilai:

result = 100

if result == 100:
print("Nilai adalah 100")

Keduanya memiliki tujuan yang berbeda.


Kesimpulan​

Hal utama yang perlu diingat:

  1. == digunakan untuk membandingkan kesamaan nilai.
  2. is digunakan untuk membandingkan identitas objek.
  3. Dua objek dapat memiliki nilai yang sama tetapi bukan objek yang sama.
  4. is sangat umum digunakan untuk pemeriksaan None.
  5. Gunakan == untuk membandingkan isi atau nilai data.
  6. Gunakan is ketika memang ingin mengetahui apakah dua referensi menunjuk ke objek yang sama.

Pola yang perlu diingat:

value == other_value

digunakan untuk value equality, sedangkan:

value is other_value

digunakan untuk object identity.