a = [1, 2, 3]
b = [1, 2, 3]
print(id(a), id(b))
print(id([1, 2, 3]), id([1, 2, 3]))
运行结果如下:
5268040 5268104
5754440 5754440
在链式赋值的情况下:
a = b = [1, 2, 3]
print(id(a), id(b))
print(id([1, 2, 3]), id([1, 2, 3]))
运行结果如下:
6120008 6120008
6120072 6120072
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a), id(b))
print(id([1, 2, 3]), id([1, 2, 3]))
运行结果如下:
5268040 5268104
5754440 5754440
在链式赋值的情况下:
a = b = [1, 2, 3]
print(id(a), id(b))
print(id([1, 2, 3]), id([1, 2, 3]))
运行结果如下:
6120008 6120008
6120072 6120072
首先了解python 的编译处理过程。
一、对于一些简单类型,python做了预编译地址的处理。
比如这样
二、而赋值非简单类型时,
你给例子的前部分, a,b 的地址都不一样 , 这样看起来就正常了。
三、用 a = b = [1,2,3]
这种赋值,就是对象赋值了, 就是传地址,不建议这么用。因为这个就是同一对象做了不同的引用。
这样比较合适
四、另外要注意的是, 如果列表的数据的传递,也是对象地址,要想传值,而不是传对象地址,要用拷贝功能。或者的python 里的copy