有懂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对应的值,变量虽然没变,内存空间只能新建了。
不知道楼主有没有看懂,你可以搜一下什么叫做可变对象和不可变对象,变量赋值和对象赋值。