b=a与b=a[:]的区别

b=a与b=a[:]的区别

b=a将两者指向同一个对象
b=a[:]会创建一个新的与a完全相同的对象,但是与a并不指向同一对象。

在计算机中,不同的对象即不同的内存地址。
可理解为:b=a将创建a与b两个快捷方式并指向同一文件;
而b=a[:]先将a指向的文件复制一份作为副本,然后创建一个指向该副本的快捷方式b。
二者不同表现为当两者指向同一对象时,改变其中任意一个,都会改变对象的值,也就是同时改变a,b的值。

b=a

In [116]: a=[1, 2, 3]

In [117]: b=a

In [118]: a,b
Out[118]: ([1, 2, 3], [1, 2, 3])

In [119]: id(a)
Out[119]: 2699906448904

In [120]: id(b)
Out[120]: 2699906448904

In [121]: b.append(4)

In [122]: a,b
Out[122]: ([1, 2, 3, 4], [1, 2, 3, 4])

In [123]: id(a)
Out[123]: 2699906448904

In [124]: id(b)
Out[124]: 2699906448904

In [125]: 

在这里插入图片描述

b=a[:]

In [129]: c=[1, 2, 3]

In [130]: d=c[:]

In [131]: id(c)
Out[131]: 2699908230216

In [132]: id(d)
Out[132]: 2699906435272

In [133]: c,d
Out[133]: ([1, 2, 3], [1, 2, 3])

In [134]: d.append(4)

In [135]: c,d
Out[135]: ([1, 2, 3], [1, 2, 3, 4])

In [136]: id(c)
Out[136]: 2699908230216

In [137]: id(d)
Out[137]: 2699906435272

In [138]:                  

在这里插入图片描述

发布了96 篇原创文章 · 获赞 8 · 访问量 4356

猜你喜欢

转载自blog.csdn.net/weixin_46108954/article/details/104602816
B
a^b
A/B
A*B