Büyük tamsayı nesneleri iki farklı nesneleri almak, böylece Interpretor tarafından yeniden değildir:
>>> a = 11111
>>> b = 11111
>>> id(a)
40351656
>>> id(b)
40351704
bir taze başvuru sayısı ölçen çünkü sys.getrefcount (11111) her zaman aynı sayıda döndürür nesne.
Genellikle
>>> sys.getrefcount(1)
73
yeni nesneye tek referansı alacağı: küçük tamsayıları için
, Python her zaman aynı nesneyi yeniden kullanır
>>> sys.getrefcount(object())
1
Ama tamsayılar özel öncesi tahsis edilir performans optimizasyonu için Python tarafından malloced alan ve ben ekstra iki referansların bununla ilgili bir şey olduğundan şüpheleniyorum.
Burada C uygulaması bakabilirsiniz:
print sys.getrefcount('foo1111111111111' + 'bar1111111111111') #1
print sys.getrefcount(111111111111 + 2222222222222) #2
print sys.getrefcount('foobar333333333333333333') #3
: Ben geçici başvuruları önbelleğe iş yerinde birkaç şey vardır düşünüyorum ben lowlevel ayrıntılarında neler olup bittiğini anlamak için iddia etmiyorum:
http://svn.python.org/view/python/trunk/Objects/intobject.c?view=markup
Düzenleme
x = "sınama", ref sayısını artırmasına rağmen x = (büyük sayı) göstermez. – kaiseroskilo