先来这样看
1
>>> a=[1,2]
>>> b=a
>>> a is b
True
2
>>> a = [1,2]
>>> b = a.copy()
>>> c = a.copy()
>>> b is c
False
3
>>> a = [1,2]
>>> a.copy() is a.copy()
False
4
>>> a = [1,2]
>>> b = a.copy()
>>> c = b
>>> b is c
True
1234综合比较:变量指向一个对象的内存地址,b=a就是让b也指向a的内存地址;当对象每次执行copy方法时都会产生新的内存地址;
然后再接着看
5
>>> import copy
>>>
>>> a =[1,2,[3,4]]
>>> b = a.copy()
>>> c = copy.copy(a)
>>> b[2][0]=33
>>> b
[1, 2, [33, 4]]
>>> c[2][0]=33
>>> c
[1, 2, [33, 4]]
>>> b == c
True
>>> b is c
False
以上可以看出两种copy都是浅复制
关于copy()和copy.copy(),我也没查到他们的区别与联系,但我个人觉得他们既然都是浅复制,它们用起来应该效果是一样的,可能执行的过程也一样吧,不知道对不对,以上就是以人见解了
|