1.首先介绍一个python的内置函数id()
- id()可以查看传入对象在内存中的地址。
- 在python中,对一些常用的数字或字符串,虽然变量名不同,但是为了节省内存,通常会共享同一个地址,如下代码示例:
# 变量a、b共用内存地址
a = 257
b = 257
print(id(a))#输出:1950671417040
print(id(b))#输出:1950671417040
2.拷贝:
- 当我们对变量a进行拷贝的时候,意味着在内存中开辟一块新的地址存放变量a的值。
- 对于str,int型的数据,无论深浅拷贝,返回的新变量都只是原变量的一个引用,而不会在内存中开辟新的地址。
- 对于其他类型的数据,浅拷贝指只对第一层的元素开辟新的地址,即数据的父亲层,对内层(子孙辈的层)还使用原来的地址。
- 深拷贝指除了最内存的元素使用原来的地址,其他层均在内存中开辟新的地址。
3.举例说明:
- str,int型数据: str型就不再举例,可见无论深浅拷贝,a,b,c都共享内存地址。
import copy
a = 123
#浅拷贝
b = copy.copy(a)
#深拷贝
c = copy.deepcopy(a)
print(id(a))# 输出:1543671728
print(i