4 回答

TA贡献1812条经验 获得超5个赞
整数是不可变的。
当你写 x=5 时,x 指向一个包含 5 的内存位置。
当您继续编写 y=x 时,变量 y 指向与 x 相同的位置。
然后输入 x+1=6,现在 x 指向一个包含 6 的新位置,而不是之前的位置。(这里,整数仍然保持不变,因为原始整数 5 仍然存在,但变量 x 现在没有绑定到它。x 现在绑定到一个新位置。但 y 仍然绑定到整数 5)
但是 y 仍然指向与 5 相同的位置。
所以,整数仍然是不可变的,这就是它的工作原理。为了看得更清楚,在每一步之后使用 id(x) 或 id(y)。

TA贡献1806条经验 获得超8个赞
有两件事在起作用。首先,int 是可以绑定到多个变量的对象。其次,python缓存了一小群小整数,这些小整数往往会被大量使用以提高效率
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.
请注意,赋值不会创建新对象。它只是将对象的引用放入变量中,就像将键/值对添加到字典中一样。
添加回答
举报