1

Code 1

nums = [1, 2, 3]
tri = nums
nums.append(4)
print(tri)       //this prints [1, 2, 3, 4]

Code 2

num = 9
num2 = num
num = 12
print num2       // this prints 9 **BUT I expected 12 like abouve code**

My Ques is Why there is a Difference between these two outputs when the the Procedure and Assignments are almost Similar ?

4

3 回答 3

4

在您的第一个示例中,numstri引用相同的对象。该append方法在原地修改引用对象,因此两者numstri继续引用相同的(修改后的)对象。

在您的第二个示例中,num设置为一个全新的对象(12);num2继续引用num在您更改其值之前引用的对象 (9)。

于 2013-07-14T16:26:18.933 回答
0

nums 是一个列表,所以它是按引用复制的,而 num 是按值复制的。

您可以使用tri = nums[:]按值复制数字

于 2013-07-14T16:35:12.440 回答
-1

代码 1 你使用元组。元组是引用类型数据。(数组、元组、类)

代码 2 是您使用的整数。它是类型数据。

值类型总是将值复制到另一个内存位置。

但是引用数据类型总是将值替换为内存位置。

这个概念伴随着面向对象的编程。

于 2013-07-14T16:38:52.360 回答