Python变量赋值
给python中给一个变量赋值可以通过一下三种方式实现:
1,直接赋值
In [1]: x = [1,[2]]
In [2]: y = x
In [3]: y is x
Out[3]: Ture
把x的内容直接赋给y,相当于x和y指向同一个值,他俩的地址也是相同的。
y会随着x的变化而变化。
2,浅拷贝
In [1]: x = [1,[2]]
In [2]: y = copy.copy(x)
In [3]: y is x
Out[3]: False
把x的内容直接赋给y,x和y指向同一个值,但是他俩的地址不相同的。
y会随着x的变化而变化。
3,深拷贝
In [1]: x = [1,[2]]
In [2]: y = copy.deepcopy(x)
In [3]: y is x
Out[3]: False
把x的内容直接赋给y,x和y不指向同一个值,地址也不相同的。
y不会随着x的变化而变化。
直接赋值 | 浅拷贝 | 深拷贝 | |
---|---|---|---|
x值改变 | 改变 | 改变 | 不变 |
与x的地址 | 相同 | 不同 | 不同 |
代码示例:
In [1]: x = [1,[2]]
In [2]: y = x #直接赋值
In [4]: import copy
In [5]: z = copy.deepcopy(x) #深拷贝
In [6]: y is z
Out[6]: False
In [7]: id(x) #x的地址
Out[7]: 2051738067592
In [8]: id(y) #y的地址
Out[8]: 2051738067592
In [9]: id(z) #z的地址
Out[9]: 2051738054536
In [10]: w = copy.copy(x) #浅拷贝
In [11]: y is w
Out[11]: False
In [12]: id(w)
Out[12]: 2051735860232
("Even the biggest failure, even the worst, most intractable mistake, beats the hell out of never trying." --《实习医生格雷》
)