关于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赋值。
深拷贝就是全部改变。
不用解释,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赋值。
深拷贝就是全部改变。
相关文章推荐
- 深入理解 python 中的赋值、引用、拷贝、作用域
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python 深入理解 赋值、引用、拷贝、作用域
- 关于Python 浅拷贝与深拷贝的一些理解
- 【python】理解python里的赋值、引用、拷贝及作用域、内存管理、垃圾回收
- 深入理解 python 中的赋值、引用、拷贝、作用域
- 关于Python中深拷贝与浅拷贝的理解(二)---排bug
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python 深入理解 赋值、引用、拷贝、作用域
- python基础:深入理解 python 中的赋值、引用、拷贝、作用域
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python 深入理解 赋值、引用、拷贝、作用域
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- 关于Python中深拷贝与浅拷贝的理解(一)---概念
- 关于Python中深拷贝与浅拷贝的理解(一)---概念
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- python赋值和拷贝----一切皆对象,参数皆引用
- python中的深拷贝和浅拷贝理解