Python 变量是引用式变量
Python 中赋值语句右边先执行
In [1]: a = [1, 2, 3]
In [2]: b = a
In [3]: a.append(4)
In [4]: b
Out[4]: [1, 2, 3, 4]
如a = [1 ,2, 3]
, 首先生成右边的列表对象,然后再给这个列表对象贴上一个a标签,(先生成对象再赋值)
b = a
, 给这个对象再贴上一个b标签,这个列表有两个标签(也可以叫别名),a和b 指向同一个对象
在Python中我们用is 语句来判断两个变量名是否为同一对象(也叫同一性)
In [5]: a is b
Out[5]: True
用 == 来判断两个变量所指向的对象 值是否一样(也叫相等性)
In [6]: c = list(b)
In [7]: c
Out[7]: [1, 2, 3, 4]
In [8]: c == b
Out[8]: True
In [9]: c is b
Out[9]: False
c和b 值相同,但是指向不同的对象,对象创建,会在内存中占用一个地址,is 比较的就是这个地址
可以用id()
来返回这个地址的整数值
In [12]: id(a)
Out[12]: 140485088411328
In [13]: id(b)
Out[13]: 140485088411328
In [14]: id(c)
Out[14]: 140485090606080
a和b指向同一对象,id值一样
c为另一对象