Python中=、copy、deepcopy

一、Python中的“=”

a = 1
b = 1
c = a
print(id(a))
print(id(b))
print(id(c))

#输出为
140707841037344
140707841037344
140707841037344

上面代码中创建常量1,a、b和c都指向1,当没有变量指向1,释放常量1内存。

二、Python中copy

import copy

a = [1,2,3]
b = copy.copy(a)
print(id(a))
print(id(b))

#输出为
2075181435016
2075181315464

上述代码中copy会开劈新的内存来存储list地址,但不会开辟内存存储list中的值。

三、Python中deepcopy

import copy

a = [1,2,3,[4,5,6]]
b = copy.deepcopy(a)
c = copy.copy(a)

print(id(a[3]))
print(id(b[3]))
print(id(c[3]))

#输出为
2043580692680
2043580693000
2043580692680

上述copy会开辟新的内存来存储list地址,但不会开辟内存存储list中的值。
deepcopy会开辟新的内存来存储list地址,但也会递归开辟内存存储list中的值。

posted @ 2018-08-08 15:17  narjaja  阅读(180)  评论(0编辑  收藏  举报