Zwlin's Blog

[笔记] Python 变量及其赋值

2019/12/31

Example-1

1a = 1
2b = 1
3a = a+1

通过这个例子可以看到,这里的 ab,开始只是两个指向同一个对象的变量而已,也可以把它们想象成同一个对象的两个名字。简单的赋值 b = a,并不表示重新创建了新对象,只是让同一个对象被多个变量指向或引用。同时,指向同一个对象,也并不意味着两个变量就被绑定到了一起。如果你给其中一个变量重新赋值,并不会影响其他变量的值。

Example-2

1l1 = [1, 2, 3]
2l2 = l1
3l1.append(4)
4l1
5[1, 2, 3, 4]
6l2
7[1, 2, 3, 4]

同样的,我们首先让列表 l1 和 l2 同时指向了 [1, 2, 3] 这个对象。

由于列表是可变的,所以 l1.append(4) 不会创建新的列表,只是在原列表的末尾插入了元素 4,变成 [1, 2, 3, 4]。由于 l1 和 l2 同时指向这个列表,所以列表的变化会同时反映在 l1 和 l2 这两个变量上,那么,l1 和 l2 的值就同时变为了 [1, 2, 3, 4]。

另外,Python 里的变量可以被删除,但是对象无法被删除。例如下面的代码:

1l = [1, 2, 3]
2del l

del l 删除了 l 这个变量,从此以后无法访问 l,但是对象 [1, 2, 3] 仍然存在。Python 程序运行时,其自带的垃圾回收系统会跟踪每个对象的引用。如果 [1, 2, 3] 除了 l 外,还在其他地方被引用,那就不会被回收,反之则会被回收。

综上,对于Python中的变量: