刚学python 想问元组的存储机制

有懂python元组机制的吗 刚学python想问个问题:

number = 1
list1 = [1,2]
tuple1 = (number,list)
print(tuple1)
number = 2
list1.append(3)
print(tuple1)

为什么tuple1两次输出中,list1值有变化,而number的值没有变化呢

第一次输出 (1,[1,2])

第二次输出 (1,[1,2,3])

list1.append(3)

number = 2

两者是不同的操作。前者是操作这个对象的方法(调用.append),后者是用另一个替换(用=号)

你可以对比
list1.append(3)

list1 = [1,2,3]
它们是不同的

如果是
number = 2
list1 = [1,2,3]
则也没有变化。

number = 1
list1 = [1,2]
tuple1 = (number,list1)
print(tuple1)
number = 2
list1.append(3)
增加这一步重新赋值: tuple1 = (number,list1)
print(tuple1)
即可得到你想要的:(2,[1,2.3])

这段代码里有三个不可变对象,1,2,和元组,这三个对象,一旦赋值就不可以更改了,更改以后就是新的内存地址了。

举例:a=1,a引用的是1这个对象的内存地址,

当再执行a=2时,1对象是不可变对象,就直接让a引用对象2的内存地址了。

元组也是这样:

第一次的tuple1,分配了一片内存地址。

第二次的tuple1,因为tuple不可变,实际上引用的是一片新的内存地址。

把Number赋值给元组,相当于变量赋值,元组实际上指向的是number的赋值对象1;

元组又不可变,想要改number对应的值,变量虽然没变,内存空间只能新建了。

不知道楼主有没有看懂,你可以搜一下什么叫做可变对象和不可变对象,变量赋值和对象赋值。