>>> a = 5
>>> a is 5
True
ama
>>> a = 500
>>> a is 500
False
budur. Ancak sayılar karmaşık olmaya başladığında, her int kendi benzersiz adres alanını alır. Bu bana mantıklı geliyor.
Geçerli uygulama, bu aralıkta bir int oluşturduğunuzda, aslında var olan nesneye bir başvuru aldığınızda, -5 ile 256 arasındaki tüm tamsayılar için bir dizi tamsayı nesnesi tutar.
Şimdi, neden bu dizeler için geçerli değil? Dizeler, büyük tamsayılar kadar karmaşık değiller (eğer moreso değilse)?
>>> a = '1234567'
>>> a is '1234567'
True
Python, tüm dize değişmezleri için aynı adresi nasıl verimli kullanır? Sayılar için olduğu gibi olası her diziyi tutamaz.
',' id's –
nesnesini karşılaştırır Hafıza adreslerini de karşılaştırır. CPython IIRC'de http://stackoverflow.com/questions/2987958/how-is-the-is-keyword-implemented-in-python –
id == bellek adresine bakın. –