python关于深拷贝与浅拷贝和私有化

浅拷贝

浅拷贝是对一个对象的顶层(外层)拷贝,只是拷贝了引用,并没有拷贝内容。
变量的赋值是地址的引用,也算是一种浅拷贝。
copy.copy()

深拷贝

深拷贝则是对一个对象深层(递归)的拷贝,保证了数据的独立性。
copy.deepcopy()

可变类型:列表、字典
不可变类型:数字类型、字符串型、元组

如果是可变类型,浅拷贝只拷贝外层,而深拷贝是完全拷贝

如果是纯的不可变类型,那么无论是浅拷贝还是深拷贝,都只是指向同一个地址。如果不可变类型里面还存在可变类型,则浅拷贝是指向,而深拷贝则为完全拷贝。

(了解)列表切片、字典的copy方法均属于浅拷贝

私有化

xx: 公有变量
_x: 单前置下划线,私有化属性或方法,from 模块 import *禁止导入,类对象和子类可以访问。
__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到,类名__xx)
xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字。
xx
:单后置下划线,用于避免与Python关键词的冲突,不推荐使用。

猜你喜欢

转载自blog.csdn.net/weixin_44786231/article/details/89412652