我讀過一篇文章,python保留了一些數字對象以獲得更好的性能。例如:python內置的整數對象
x = 3
y = 3
print(id(x))
print(id(y))
給出相同的值,這意味着x和y引用完全相同的對象。文章建議保留的數字對象大約在1〜100的範圍內。
所以我測試下面的代碼用於獲取的確切範圍:
for i in range(-1000,1000):
x = int(str(i))
y = int(str(i))
if str(id(x)) == str(id(y)):
print(i)
,其結果是相當怪異:它打印出-5〜256。
我想知道這兩個神奇數字是如何來自以及爲什麼他們正在使用。另外,這兩個值會在不同的環境中變化嗎? 謝謝!
這是一個CPython實現細節(優化),而不是一般的Python。 –
答案是,不要使用ID爲非易變類型 – Julius