####变量赋值 #python中赋值就是将某个对象的地址存在另一个变量中 #Num a=110 #变量a的内容是对象110的地址 print(id(a)) #20908560 b=a #将对象110的地址放到到变量b的内容中 print(id(b)) #20908560 #String str='give you some color' str_eval=str print(id(str)) #20843984 print(id(str_eval)) #20843984 #Tuple tup=('I','like',520) tup_eval=tup print(id(tup)) #20204160 print(id(tup_eval)) #20204160 #List mylist=['你说谎','你',120] mylist_eval=mylist print(id(mylist)) #11676048 print(id(mylist_eval))#11676048 #以下两个变量所引用的对象相等的但变量的内容不一样,即地址不一样 a=10000000000 b=1000000000 print(id(a)) #44736832 print(id(b)) #44102288 print(a is b) #False #以下两个变量所引用的对象一样,变量的内容也一样,因为当对象的值较小时, # 为了不浪费内存,python将变量引用同一个对象 x=2 y=2 print(id(x)) #1631143584 print(id(y))#1631143584 tup=('I','like',520) tup2=('I','like',520) print(id(tup))#60181120 print(id(tup2)) #60178600 # 深拷贝和浅拷贝都是在内存中重新创建了新的对象,对于简单的数据类型,深拷贝和浅拷贝一样 # 对于复杂数据类型 ,比如列表,在一维层次,mylist和mylisttwo的元素是一样的,两个列表都存 # 着一样的地址,但因为两者已是不同对象,mylist在一维层次添加或删除元素时,mylisttwo并 # 没有随着添加和删除,而在二维层次深拷贝和浅拷贝就有区别了,当mylist中的二维层次的元素 # 改变时,mylisttwo也随着改变,而mylistthird则不会改变,经过深拷贝,mylistthird已经与mylist # 完全分家,而经过浅拷贝,mylisttwo与mylist 在二维层次还有关联,他们还引用着同一个一维列表 import copy mylist=['html','css',['js','jquery']] mylisttwo=copy.copy(mylist) mylistthird=copy.deepcopy(mylist) mylist.append('python') print(mylist) #['html', 'css', ['js', 'jquery'], 'python'] print(mylisttwo) #['html', 'css', ['js', 'jquery']] print(mylistthird)#['html', 'css', ['js', 'jquery']] mylist[2][1]='django' print(mylist) #['html', 'css', ['js', 'django']] print(mylisttwo) #['html', 'css', ['js', 'django']] print(mylistthird)#['html', 'css', ['js', 'jquery']] mylist[2]='tornado' print(mylist) #['html', 'css', 'tornado'] print(mylisttwo) #['html', 'css', ['js', 'jquery']] print(mylistthird)#['html', 'css', ['js', 'jquery']]
python 赋值 浅拷贝 深拷贝
最新推荐文章于 2023-12-29 12:27:03 发布