Sadece etkileşimli bir Python oturumunda gerçekleşen, ancak bir komut dosyası yazıp çalıştırdığımda olmayan bu tuhaf davranışa rastladım.Python: yorumlayıcısındaki id() davranışı
Dize dolayısıyla Python değişmez bir veri türüdür: Artık
>>> s2='string'
>>> s1='string'
>>> s1 is s2
True
garip kısmı:
>>> s1='a string'
>>> s2='a string'
>>> s1 is s2
False
Ben dizesinde bir boşluk olan bu davranışı neden olduğunu gördük. Bunu bir komut dosyasına koyar ve çalıştırırsam, sonuç her iki durumda da doğrudur.
Bunun hakkında bir ipucu olur mu? Teşekkürler.
DÜZENLEME:
Tamam, yukarıdaki soru ve cevaplar bazı fikirler verebilir. Şimdi burada başka bir deneydir: dizeleri kesinlikle uzun 'a string'
daha vardır Bu durumda
>>> s2='astringbstring'
>>> s1='astringbstring'
>>> s1 is s2
True
ama hala aynı tanımlayıcıları yaşıyoruz.
Bu gönderiye bakın http://stackoverflow.com/questions/2123925/when-does-python-allocate-new-memory-for-identical-strings – isedev
Dahili kuralların Python uygulamaları ve sürümleri arasında farklılık gösterebileceğini unutmayın. Deyimsel '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' ifadesi Python’da son derece nadirdir; Değer eşitliğinden ziyade sadece nesne kimliği ile ilgilendiğinizde kullanmalısınız. –