Python的赋值操作

  • symbol 指向实例的引用
  • 实例 = 空间 + 对象

  • ==赋值==的问题几乎存在于任何地方,python中一切symbol的本质都是引用,理清楚赋值的环境图对分析程序是很重要的,如下我说明了python赋值的奥妙,赋值情况

    • symbol 之间
    • 实例(空间) 之间
    • symbol 与 空间 之间
  • python中,针对可变对象是浅拷贝,对于非可变对象是深拷贝

    • 我们可以这样理解,我们赋值过去的都是 symbol 本质是引用
      • 对于不可变类型,你试图改变它,它会创建一个新的实例并只作用于改变它的symbol上,于是其它symbol不变
      • 对于可变类型,你试图改变它,它是不会创建新实例的,因此所有symbol都改变
      • 综上,我们在分析时,可以认为赋值操作中
        • 不可变类型就是深拷贝过去的
        • 可变类型就是浅拷贝过去的
  • 赋值 与 创建空间 是不同的两个过程但是往往同时出现,对一个空间赋值 symbol

    • 如果symbol 是可变引用,则浅拷贝,该空间只是指向旧实例
    • 如果symbol 是不可变引用,则是深拷贝,该空间被创建新实例