python与Java类似,有些数据类型是值传递,有些是引用传递。
比如列表list,在原处修改值
>>> L1 = [1,2,3]
>>> L2 = L1
>>> L2
[1, 2, 3]
>>> L1[0] = 9
>>> L1
[9, 2, 3]
>>> L2
[9, 2, 3]
这个例子中,L1和L2引用了同一个对象,即指向了同一片内存区域,列表在原处可修改,所以L1的修改影响了L2的值。【共享引用,在原处修改】
>>> a = 1
>>> b = a
>>> a
1
>>> b
1
>>> a = 3
>>> a
3
>>> b
1
但是整数并不能在原处修改,a重新引用了一个对象3之后,并不能影响b,所以b还是引用了1这个对象
======================================================= =====================
由于Python具有缓存机制,所以python对小的数字也采用复用,如下例子:
>>> a = 32
>>> b = 32
>>> a == b
True
>>> a is b
True
is操作符,是在检查对象的同一性,如果两个变量名精确地指向了同一个对象,它会返回True。实际上,is只是比较实现引用的指针,是否指向同一个对象。
上例中,按照常规,因