4 回答

TA貢獻1812條經驗 獲得超5個贊
整數(shù)是不可變的。
當你寫 x=5 時,x 指向一個包含 5 的內存位置。
當您繼續(xù)編寫 y=x 時,變量 y 指向與 x 相同的位置。
然后輸入 x+1=6,現(xiàn)在 x 指向一個包含 6 的新位置,而不是之前的位置。(這里,整數(shù)仍然保持不變,因為原始整數(shù) 5 仍然存在,但變量 x 現(xiàn)在沒有綁定到它。x 現(xiàn)在綁定到一個新位置。但 y 仍然綁定到整數(shù) 5)
但是 y 仍然指向與 5 相同的位置。
所以,整數(shù)仍然是不可變的,這就是它的工作原理。為了看得更清楚,在每一步之后使用 id(x) 或 id(y)。

TA貢獻1806條經驗 獲得超8個贊
有兩件事在起作用。首先,int 是可以綁定到多個變量的對象。其次,python緩存了一小群小整數(shù),這些小整數(shù)往往會被大量使用以提高效率
x = 5 # get the cached `5` object and bind it to x
y = x # take whatever object is bound to x and also bind it to y
x += 1 # take whatever object is bound to x, call its `__iadd__`
# method and bind the return value to x. `int.__iadd__`
# adds the integers and since it is small, returns the
# cached `6` object.
請注意,賦值不會創(chuàng)建新對象。它只是將對象的引用放入變量中,就像將鍵/值對添加到字典中一樣。
添加回答
舉報