我知道这是一个非常基本的问题,但我需要帮助理解这个简短的概念。
我正在学习Python,这本书说" Python中的每个变量都是指向对象的指针。因此,当您编写类似y=x
的内容时,您实际上会使它们都指向同一个对象。如果更改原始对象,则将更改指向它的所有其他指针"
然后他们举了一个例子:
x=[1,2,3]
y=x
x[1]=3
print y
它确实打印[1,3,3]
但是,当我编写以下代码时:
x=5
y=x
x=7
print y
不打印7.打印5。
为什么?
答案 0 :(得分:6)
您的第一个例子可以解释如下:
x=[1,2,3] # The name x is assigned to the list object [1,2,3]
y=x # The name y is assigned to the same list object referenced by x
x[1]=3 # This *modifies* the list object referenced by both x and y
print y # The modified list object is printed
然而,第二个示例仅将名称x
重新分配给另一个整数对象:
x=5 # The name x is assigned to the integer object 5
y=x # The name y is assigned to the same integer object referenced by x
x=7 # The name x is *reassigned* to the new integer object 7
print y # This prints 5 because the value of y was never changed
以下是assignment in Python的参考资料。