python的赋值、浅拷贝和深拷贝】的更多相关文章

引用:https://www.jb51.net/article/142775.htm 列表赋值: 1 2 3 4 5 6 7 >>> a = [1, 2, 3] >>> b = a >>> print b [1, 2, 3] >>> a[0] = 0 >>> print b [0, 2, 3] 解释:[1, 2, 3]被视作一个对象,a,b均为这个对象的引用,因此,改变a[0],b也随之改变 如果希望b不改变,可以用…
在讲什么是深浅拷贝之前,我们先来看这样一个现象: a = ['scolia', 123, [], ] b = a[:] b[2].append(666) print a print b…
引用 Python是动态数据类型的语言,故在对变量进行赋值时是不用制定变量类型的. 或者说,你可以把变量赋值的过程,当作是贴一个标签,去引用该数据. 看下面的例子: In [54]: a=4 In [55]: b=a In [56]: id(a) Out[56]: 1652425264 In [57]: id(b) Out[57]: 1652425264 可以看到,a与b志向了同一个地址.这便是引用 浅拷贝与深拷贝 先来看一个例子: In [58]: import copy In [59]: a…
浅拷贝与深拷贝 1.普通赋值 例1: a = 15b = aa = 16print(b)#例2:lst1 = [1,2,3]lst2 = lst1lst1.append(4)print(lst2)#这个情况是lst1和lst2地址相同,元素相同 2.浅拷贝 #只拷贝以及所有元素#例: #法一:直接.copy()拷贝 lst1 = [1,2,3]#lst2 = lst1lst2 = lst1.copy()print(lst2)lst1.append(4)print(lst2)print(lst1)…
阐述引用.浅拷贝和深拷贝前,首先需要要了解 Python 的世界里,一切皆对象,每个对象各包含一个 idendity.type 和 value. 引用(Reference) >>> b = [1 , 2] >>> a = [b, 3, 4] >>> >>> c = a >>> print c [[1, 2], 3, 4] >>> id(a) 4408148552 >>> id(c)…
直接引用,间接引用 # 1.列表存储的是索引对应值的内存地址,值会单独的开辟一个内存空间 list = ["a","b"] 内存里面存储的就是list[0],list[1],也就是分别存储的是0,1索引 以及"a","b"的内存地址,这个值"a"会单独的开辟一个内存空间 # 2.字典存储的是key对应值的内存地址 # 总结:容器都是间接引用的 可变和不可变类型 # 可变类型:值改变的情况下,id(内存地址)…
赋值: 变量的引用,没有拷贝空间 对象之间赋值本质上 是对象之间的引用传递而已.也就是多个对象指向同一个数据空间. 拷贝的对象分两种类型: . 拷贝可变类型 浅拷贝: 只拷贝第一层数据,不关心里面的第二层内容,能够保证外层数据独立 深拷贝: 拷贝了所有层数据,所有层数据都是独立. 而一层可变类型数据,深拷贝和浅拷贝是一样,会拷贝. . 拷贝不可变类型 一层不可类型数据,深拷贝和浅拷贝也是一样,不会拷贝,只是引用 多层都是不可类型数据,深拷贝和浅拷贝也是一样,不会拷贝,只是引用 多层中只要有可变类…
1.赋值语句 a = 'abc' b = a print id(a) print id(b) # id(a):29283464 # id(b):29283464 通过简单的复制,我们可以看到,a b其实是一个对象. 对象赋值实际上是简单的对象引用,也就是说,当你创建了一个对象,然后把它赋值给另一个变量时,python并没有拷贝这个对象,而是拷贝了这个对象的引用.…
一.问题引出浅拷贝 首先看下面代码的执行情况: a = [1, 2, 3] print('a = %s' % a) # a = [1, 2, 3] b = a print('b = %s' % b) # b = [1, 2, 3] a.append(4) # 对a进行修改 print('a = %s' % a) # a = [1, 2, 3, 4] print('b = %s' % b) # b = [1, 2, 3, 4] b.append(5) # 对b进行修改 print('a = %s'…
编者注:本文主要参考了<Python核心编程(第二版)> 以下都是参考资料后,我自己的理解,如有错误希望大家不吝赐教. 大家有没有遇到这样一种情况,对象赋值后,对其中一个变量进行修改,另外一个变量的值也改变了.比如: person = ['name', ['saving', 100]] hubby = person wifey = person hubby[0] = 'joe' wifey[0] = 'jane' print hubby, wifey hubby[1][1] = 50 prin…