Python的赋值操作
- symbol 指向实例的引用
-
实例 = 空间 + 对象
-
==赋值==的问题几乎存在于任何地方,python中一切symbol的本质都是引用,理清楚赋值的环境图对分析程序是很重要的,如下我说明了python赋值的奥妙,赋值情况
- symbol 之间
- 实例(空间) 之间
- symbol 与 空间 之间
-
python中,针对可变对象是浅拷贝,对于非可变对象是深拷贝
- 我们可以这样理解,我们赋值过去的都是 symbol 本质是引用
- 对于不可变类型,你试图改变它,它会创建一个新的实例并只作用于改变它的symbol上,于是其它symbol不变
- 对于可变类型,你试图改变它,它是不会创建新实例的,因此所有symbol都改变
- 综上,我们在分析时,可以认为赋值操作中
- 不可变类型就是深拷贝过去的
- 可变类型就是浅拷贝过去的
- 我们可以这样理解,我们赋值过去的都是 symbol 本质是引用
-
赋值 与 创建空间 是不同的两个过程但是往往同时出现,对一个空间赋值 symbol
- 如果symbol 是可变引用,则浅拷贝,该空间只是指向旧实例
- 如果symbol 是不可变引用,则是深拷贝,该空间被创建新实例