Python 赋值机制
先看一个例子:
In [1]:
x = [1, 2, 3] y = x x[1] = 100 print y
[1, 100, 3]
改变变量x
的值,变量y
的值也随着改变,这与Python内部的赋值机制有关。
简单类型
先来看这一段代码在Python中的执行过程。
x = 500 y = x y = 'foo'
x = 500
Python分配了一个 PyInt
大小的内存 pos1
用来储存对象 500
,然后,Python在命名空间中让变量 x
指向了这一块内存,注意,整数是不可变类型,所以这块内存的内容是不可变的。
内存 | 命名空间 |
---|---|
pos1 : PyInt(500) (不可变) |
x : pos1 |
y = x
Python并没有使用新的内存来储存变量 y
的值,而是在命名空间中,让变量 y
与变量 x
指向了同一块内存空间。
内存 |
---|