Python' da == ve is Arasındaki Fark: Türlerin Farkı
Table of Contents:
- Giriş
- İki eşittir (==) ve "is" Anahtar Kelimesi Arasındaki Fark
- İki Şişe Gazozun Karşılaştırılması
- Liste Karşılaştırması
- Nesnelerin Bellek Adreslerini Karşılaştırma
- İki Eşittir (==) ve "is" Anahtar Kelimesinin Arkaplandaki Farkı
- Sonuç
📋 Giriş
📋 İki eşittir (==) ve "is" Anahtar Kelimesi Arasındaki Fark
📋 İki Şişe Gazozun Karşılaştırılması
📋 Liste Karşılaştırması
📋 Nesnelerin Bellek Adreslerini Karşılaştırma
📋 İki Eşittir (==) ve "is" Anahtar Kelimesinin Arkaplandaki Farkı
📋 Sonuç
📋 Giriş
Merhaba herkese! Bu videoda, "==" ve "is" anahtar kelimesi arasındaki farka ve karşılaştırmalar yaparken nelere dikkat etmemiz gerektiğine değineceğiz.
📋 İki eşittir (==) ve "is" Anahtar Kelimesi Arasındaki Fark
İki eşittir (==) operatörü, değerleri karşılaştırır ve eşit olup olmadıklarını kontrol ederken, "is" anahtar kelimesi, nesnelerin bellek kimliğini kontrol eder. Yani, "is" anahtar kelimesi ile eşitlik kontrolü yapıldığında, değerlerin aynı bellek nesnesine ait olup olmadığı kontrol edilir.
📋 İki Şişe Gazozun Karşılaştırılması
Gazozları bir parti ortamında karşılaştırmak istediğimizi düşünelim. Ben bir Pepsi, kardeşim ise bir kola içecek. Öncelikle, bu gerçek dünya nesnelerini bir Python dizesi gibi değil, gerçek nesneler gibi düşünelim.
Eğer karşılaştırmayı "==" operatörü ile yaparsak, kola ile Pepsi eşit olmayacaktır çünkü farklı içeriklere sahipler. Ancak, eğer her ikimizin de Pepsi içeceği olursa, "==" operatörünü kullanarak bunları eşit sayabiliriz çünkü içerikleri aynıdır. Ancak, bu eşitlik nesneler arasında değişken olabilir. Örneğin, bir programda sadece aynı marka ve türde içecekleri içerlerse bu eşit kabul edilebilir. Eşitlik nesneler arasındaki ilişkiye bağlıdır.
Ancak, "is" anahtar kelimesi ile karşılaştırma yaptığımızda bu doğru olmayacaktır çünkü "is" anahtar kelimesi, nesnelerin bellekte aynı olup olmadığını kontrol eder. Yani, iki farklı Pepsi kutusuna sahip olsak bile, bu içecekler aynı olsa bile, yine de farklı nesnelerdir.
📋 Liste Karşılaştırması
Şimdi, bu konuyu kod örnekleriyle daha net bir şekilde anlamaya çalışalım. İki farklı liste oluşturalım: l1 ve l2.
l1 = [1, 2, 3, 4, 5]
l2 = [1, 2, 4, 5]
Eğer l2 == l1 veya l1 == l2 şeklinde bir karşılaştırma yaparsak, bu durumda sonuç False olacaktır çünkü listelerin içerikleri farklıdır.
Ancak, l1 ve l2 listelerini aynı içeriklere sahip hale getirirsek, sonuç True olacaktır çünkü içerikleri aynıdır. Ancak, eşitlik durumunda bile, bu hala farklı bellek nesneleridir.
Eğer l1 is l2 şeklinde bir karşılaştırma yaparsak, sonuç yine False olacaktır çünkü bellek adreslerini kontrol ediyoruz.
Ancak, l2 = l1 şeklinde bir atama yaparsak, l2'nin bellek adresi l1'in bellek adresi ile aynı olacağından sonuç True olacaktır. Bu durumda, eğer birini değiştirirsek, diğeri de değişecektir çünkü aynı nesneyi paylaşıyorlar.
📋 Nesnelerin Bellek Adreslerini Karşılaştırma
İki nesnenin bellek adresini karşılaştırmak için ID fonksiyonunu kullanabiliriz. ID fonksiyonuna bir nesneyi geçirerek, o nesnenin bellek adresini alabiliriz.
ID(l1) == ID(l2) şeklinde bir karşılaştırma yaparsak, sonuç True olacaktır çünkü bellek adresleri aynıdır. Aslında, "is" anahtar kelimesi, ID fonksiyonunu kullanarak bellek adreslerini kontrol eder.
Eğer l1 is l2 şeklinde bir karşılaştırma yaparsak, yine sonuç True olacaktır çünkü bellek adresleri aynıdır.
📋 İki eşittir (==) ve "is" Anahtar Kelimesinin Arkaplandaki Farkı
Arkaplanda, "==" ve "is" anahtar kelimelerinin işleyişi aslında bellek adreslerini karşılaştırmaktır. Yani, == operatörünü kullanarak da bellek adreslerini kontrol edebiliriz.
Sonuç olarak, iki eşittir (==) operatörü, değerlerin eşitliğini kontrol ederken, "is" anahtar kelimesi, bellek adreslerinin aynı olup olmadığını kontrol eder.
📋 Sonuç
Bu videoda, "==" ve "is" anahtar kelimeleri arasındaki farkı ve karşılaştırmalarda nelere dikkat etmemiz gerektiğini öğrendik. Karşılaştırma yaparken, değerleri eşitlemek için "==" operatörünü, bellek adreslerini kontrol etmek için ise "is" anahtar kelimesini kullanabiliriz.
Daha fazla sorunuz varsa, lütfen yorum bölümünde sorun. Bu videoyu beğendiyseniz, beğen tuşuna basarak destekleyebilir ve faydalı bulacağınızı düşündüğünüz kişilerle paylaşabilirsiniz.
Highlights
- "==" operatörü, değerlerin eşitliğini kontrol ederken, "is" anahtar kelimesi bellek adreslerini kontrol eder.
- Nesnelerin içerikleri eşit olsa bile, bellek adresleri farklı olabilir.
- Listelerde, aynı bellek adresine sahip olan nesneler değiştirildiğinde, diğer nesneler de etkilenir.
- Bellek adreslerini kontrol etmek için "==" operatörü yerine "is" anahtar kelimesini kullanabiliriz.
Sıkça Sorulan Sorular (FAQ)
S: "==" operatörü ve "is" anahtar kelimesinin benzerlikleri nelerdir?
C: "==" operatörü ve "is" anahtar kelimesi, nesneleri karşılaştırmak için kullanılan Python'daki iki farklı yöntemdir. Her ikisi de karşılaştırma yapar, ancak farklı kriterlere göre sonuç üretir. "==" operatörü, değerlerin eşit olup olmadığını kontrol ederken, "is" anahtar kelimesi bellek adreslerini kontrol eder.
S: Bellek adresleri neden önemlidir?
C: Bellek adresleri, nesnelerin benzersiz kimliklerini belirlemek için kullanılır. İki nesnenin bellek adresleri aynıysa, bu nesneler aynı nesnedir ve içerikleri de aynıdır. Bellek adresleri farklı ise, nesneler de farklıdır.
S: Değişkenlerin bellek adreslerini nasıl kontrol edebilirim?
C: Python'da, bir nesnenin bellek adresini almak için "id()" fonksiyonunu kullanabilirsiniz. Örneğin, "id(obje)" şeklinde kullanarak bir nesnenin bellek adresini elde edebilirsiniz.
Kaynaklar: