python built-in integer object -
i read article python retains number objects better performance. example:
x = 3 y = 3 print(id(x)) print(id(y))
gives out same values, means x , y referencing same object. article suggested retained number objects approximately in range 1~100.
so tested following code getting exact range:
for in range(-1000,1000): x = int(str(i)) y = int(str(i)) if str(id(x)) == str(id(y)): print(i)
and result quite weird: prints out -5~256.
i'm wondering how these 2 magic numbers came , why they're being used. also, these 2 values change in different environment? thanks!
256 power of 2 , small enough people using numbers range.
-5 less sure about, perhaps special values?
related: what's integer cache inside python?
also word of wisdom thread:
this implementation detail, don't ever rely on happening or not happening
Comments
Post a Comment