08_Python_直接赋值、深拷贝、浅拷贝

1、直接赋值

  • 简单来说,直接赋值就是对象的引用(别名)。

1.1、实例

# 1、直接赋值
a =  {1: [1,2,3]}
b=a

# 查看a、b在内存的地址
print( 'a = ', id(a) )
print( 'b = ', id(b) )

#输出结果,可以看出他们的地址是一致的。

'''
a =  6909600
b =  6909600
'''

2、浅拷贝

  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

2.1、浅拷贝实例

a = {1: [1, 2, 3]}
b = a.copy()

a[1].append('c')  # 修改对象a中的数组对象

print('a = ', a)
print('b = ', b)

'''
通过输出结果可以看出,虽然a、b并不是独立存在的,修改a后,b中同样做了修改。

a =  {1: [1, 2, 3, 'c']}
b =  {1: [1, 2, 3, 'c']}
'''

3、深拷贝

  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

深拷贝是在另一块地址中创建一个新的变量或容器,同时容器内的元素的地址也是新开辟的,仅仅是值相同而已,是完全独立的一个副本。

3.1、深拷贝实例

import copy

a = {1: [1, 2, 3]}
# 深拷贝
b = copy.deepcopy(a)

a[1].append('c')  # 修改对象a中的数组对象

print('a = ', a)
print('b = ', b)

'''
通过输出结果可以看出,虽然a、b是独立存在的,a的修改不会影响b

a =  {1: [1, 2, 3, 'c']}
b =  {1: [1, 2, 3]}
'''
原文地址:https://www.cnblogs.com/jasontang369/p/9243003.html