Python Kimlik Operatörünü ve "==" ile "IS" Operatörü Arasındaki Farkı Öğrenin


Bu makale temel olarak Python'daki önemli bir operatörü (“IDENTITY OPERATOR”) ve bir kimlik operatörünün nasıl farklılaştığını (dir, değildir) açıklamak için hazırlanmıştır. ) karşılaştırma operatöründen (==).

KİMLİK OPERATÖRÜ

Kimlik operatörü (“is ” ve “is not ”) nesnenin hafıza konumunu karşılaştırmak için kullanılır. Bellekte bir nesne oluşturulduğunda, o nesneye benzersiz bir bellek adresi tahsis edilir.

  • '==' her iki nesne değerinin aynı olup olmadığını karşılaştırır.
  • 'is', her iki nesnenin de aynı bellek konumuna ait olup olmadığını karşılaştırır.

Ad, Ad1 ve Ad2 adlı üç dize nesnesi oluşturun. Dize nesnesi Ad ve Ad2 aynı değeri, Ad1 ise farklı değerleri tutacak.

Bu nesneleri oluşturduğumuzda, sahne arkasında olan şu ki, o nesne hafızada oluşturulacak ve programın ömrü boyunca kullanılabilir olacaktır.

Artık her iki nesne değerinin de aynı olup olmadığını kontrol etmek için bir karşılaştırma işleci “== ” kullanabilirsiniz. Karşılaştırma operatörünün çıktısı bir Boole (Doğru veya Yanlış) değeri olacaktır.

Artık eşitliği belirlemek için iki değeri karşılaştırdığınıza göre, kimlik operatörünün nasıl çalıştığına bir göz atalım.

Yerleşik Id() işlevi, bir nesnenin "kimliğini" elde etmek için kullanılır. Nesnenin ömrü boyunca benzersiz ve sabit olacak bir tamsayı.

Basitleştirmek için, bunun size atanan benzersiz devlet ID veya Emp ID olduğunu düşünün; aynı şekilde her nesne için benzersiz bir tamsayı değeri atanır.

Artık “is ” operatörünü kullanarak 2 nesne referansını karşılaştırabilirsiniz.

Kimlik operatörünü kullanarak Ad ile Ad1 veya Ad2'yi karşılaştırdığımda, arka uçta yaptığı şey yalnızca “id(Name) komutunu çalıştırmasıdır. ) == id(Ad2) ”. id(Name) ve id(Name2) aynı bellek konumunu paylaştığından True değerini döndürür.

Şimdi ilginç kısım geliyor. Hem Ad hem de Ad1'in aynı değerlere sahip olduğu ve id() işlevini çalıştırdığımızda aynı tam sayı değerini döndürdüğü önceki örneğimize bakın. Aşağıdaki ekran görüntüsünde aynı değerleri paylaşmalarına rağmen neden “Name_new ” ve “Name_le ” nesnesinin aynı olmadığını düşünüyorsunuz?

Bunun nedeni python tasarım uygulamasıdır. (-5,256) aralığında bir tam sayı nesnesi ve 20 karaktere eşit veya daha büyük dize nesneleri oluşturduğunuzda, bu nesnelerin aynı değeri için bellekte farklı nesneler oluşturmak yerine önceden oluşturulmuş nesnelere işaretçi görevi görür.

Aşağıdaki resimli gösterim size bu makalede şu ana kadar gördüklerimiz hakkında net bir fikir verecektir.

Özet

Bu makalede kimlik operatörünün ne olduğunu gördük. Karşılaştırma operatörü ve kimlik operatörünün nasıl kullanıldığı, bir nesnenin bellekte nasıl oluşturulduğuna dair tasarım uygulaması.