Python'da is ile == operatörleri arasındaki fark nedir?

Cevap

  • == değer eşitliğini kontrol eder; arka planda __eq__ metodunu çağırır.
  • is kimlik eşitliğini kontrol eder: iki isim bellekte aynı nesneyi mi gösteriyor? (id(a) == id(b))
a = [1, 2, 3]
b = [1, 2, 3]
c = a

a == b   # True  -> içerikleri aynı
a is b   # False -> farklı nesneler
a is c   # True  -> aynı nesne

Ne zaman is kullanılır?

Yalnızca singleton nesnelerle karşılaştırırken: None, True, False, Ellipsis ya da kendi sentinel nesneleriniz.

if deger is None:
    ...

== None yazmak çalışır ama bir sınıf __eq__'yu farklı tanımlamışsa yanıltıcı sonuç verebilir; PEP 8 is None önerir.

Tuzak: küçük tamsayı ve string önbelleği

CPython -5 ile 256 arasındaki tamsayıları ve bazı kısa string'leri önbelleğe alır (interning). Bu yüzden a = 256; b = 256; a is b True dönebilir, ama 1000 için False olabilir. Bu bir implementasyon detayıdır; sayı ve string karşılaştırmasında her zaman `==` kullanın.

  1. list ve tuple arasındaki fark nedir?KolayPythonBackend
  2. Varsayılan argüman olarak liste vermek neden tehlikelidir?OrtaPythonBackend
  3. Decorator nedir? Basit bir zamanlama decorator'ı yazın.OrtaPythonBackend
  4. Generator nedir, yield ne yapar?OrtaPythonBackend
  5. GIL nedir ve çoklu iş parçacığını nasıl etkiler?ZorPythonBackend
  6. async/await ve asyncio nasıl çalışır? Ne zaman thread veya process yerine tercih edilir?ZorPythonBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle