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.iskimlik 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ı nesneNe 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.
İlgili Python soruları
- list ve tuple arasındaki fark nedir?
- Varsayılan argüman olarak liste vermek neden tehlikelidir?
- Decorator nedir? Basit bir zamanlama decorator'ı yazın.
- Generator nedir, yield ne yapar?
- GIL nedir ve çoklu iş parçacığını nasıl etkiler?
- async/await ve asyncio nasıl çalışır? Ne zaman thread veya process yerine tercih edilir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.