1a = 12print('a', a, id(a))3b =a4a += 15print('a', a, id(a))6print('b', b, id(b))78print('-'* 20)9a = a + 110print('a', a, id(a))11print('b', b, id(b))1213#输出如下:14a 1 14072141176052815a 2 14072141176056016b 1 14072141176052817--------------------18a 3 14072141176059219b 1 140721411760528
像上面所展示的那样, 在a加上等于1之后, a的地址出现了改变, 然而b等于a这一情况是指向a原来的地址, 当a发生改变的时候, 原来的地址并未改变, 所以b的值以及地址都没有发生改变。
1a = [1, 2]2print(id(a))3f =a4a += [3, 4]5print(id(a))6print(f)78print('_'* 20)9b = [1, 2]10print(id(b))11g =b12b = b + [3, 4]13print(id(b))14print(g)1516#输出如下:17153435205261618153435205261619[1, 2, 3, 4]20____________________21153435205312822153435260973623[1, 2]
如上所示,我们使用列表来进行比较,会发现与之前不同:
a的地址跟前给a加上=运算后的地址是一样的, 这个地址不曾有过改变, 而且呢, f的值出现了变化, 它变成了经过变化之后的a的值, 这就表明a原来的地址没有变动, 但是值产生了变化。