-
is
比较两个引用是否指向同一个对象 -
==
比较两个对象是否相等
>>> a = [1,2] >>> b = [1,2] >>> c = a >>> id(a) 140275902517640 >>> id(b) 140275902517960 >>> id(c) 140275902517640 >>> a == b # a、b分别指向的对象值相等 True >>> a is b # a、b分别指向不同的对象 False >>> a is c # a、c指向同一个对象 True
- 深拷贝:复制了引用和内容
- 浅拷贝: 仅复制了引用,未复制对象
# 浅拷贝 a、b指向同一个对象地址 >>> a = [1,2] >>> b = a >>> id(a) 140275902517704 >>> id(b) 140275902517704 >>> a.append(3) # 浅拷贝,修改a的值,b的值随之变化 【图1】 >>> b [1,2,3] # 深拷贝 >>> import copy >>> c = copy.deepcopy(a) >>> id(a) 140275902517704 >>> id(c) 140275902301264 >>> a.append(3) # 深拷贝,修改a的值,c的值不变 【图2】 >>> c [1,2] >>> a = [1,2] # 【图3】 >>> b = [3,4] >>> c = [a,b] >>> d = copy.deepcopy(c) >>> d [[1,2],[3,4]] >>> a.append(3) >>> c [[1,3],4]] # 浅拷贝 >>> d [[1,4]] # 深拷贝 >>> a = [1,2] # 【图4】 >>> b = [3,b] >>> d = copy.copy(c) >>> d [[1,4]] >>> a[0] = 0 >>> d [[0,4]] # copy当拷贝一个不可变类型数据时,只会进行浅拷贝 a = [1,2] b = [3,4] c = (a,b) d = copy.copy(c)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。