代码1
nums = [1, 2, 3]
tri = nums
nums.append(4)
print(tri) //this prints [1, 2, 3, 4]
代码2
num = 9
num2 = num
num = 12
print num2 // this prints 9 **BUT I expected 12 like abouve code**
我的问题是当程序和作业几乎相似时,为什么这两个输出之间存在差异?
答案 0 :(得分:4)
在第一个示例中,nums
和tri
引用相同的对象。 append
方法修改了引用对象,因此nums
和tri
继续引用相同(已修改)的对象。
在第二个例子中,num
被设置为一个全新的对象(12); num2
继续引用在更改其值之前num
引用的对象(9)。
答案 1 :(得分:0)
nums是一个列表,因此它通过引用复制,num按值复制。
您可以使用tri = nums[:]
按值复制nums
答案 2 :(得分:-1)
代码1你使用元组。元组是引用类型数据。 (阵列,元组,类)
代码2是您使用的整数。它是值类型数据。
值类型始终将值复制到另一个内存位置。
但是引用数据类型总是将值替换为内存位置。
这个概念带有面向对象的编程。