您的位置:首页 > 编程语言 > Python开发

关于python的拷贝,赋值理解

2014-10-16 17:34 501 查看
最先说明的是,python没有指针概念,但是python所有的变量都是类。可以理解为所有变量都是类。就连a=3,都可以理解为a->一个整形变量3,重新赋值a=4就是改变指向了。b=a。于是a和b指向的是同一个整数或者说地址。id(a)可以理解为是所指向的地址。当然python好像没有指针概念。可能是被屏蔽了吧,以防混淆吧。(个人理解,不对请指教哈)

不用解释,a=b,id(a),id(b)肯定是相同的。a和b实际上是同一个对象不同名字。

浅拷贝个人理解是把对象拷贝两个对象肯定不是同一个对象,a=copy.copy(b),id(a)和id(b)肯定不同,但是不能说a和b完全没有关系。浅拷贝我理解的是:假如a有属性a1,a2,b创建属性b1,b2.然后b1=a1,b2=a2。所以说id(a1)和id(b1),以及id(a2),id(b2)是相同的。改变a.a1会改变b.b1。比如a=[5, 2, 3, [3, 4]],b=list(a)(说明一下list实验了一下是浅拷贝)。改变a[3][0],b也变化。但是改变b[0]或者不改b[3]内容,只改整个b[3],b不变,为何?这就相当于不是对a1和b1的子内容操作,而是重新对a1赋值。

深拷贝就是全部改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: