在python中墓猎,對象賦值實(shí)際上是對象的引用捆昏。當(dāng)創(chuàng)建一個(gè)對象,然后把它賦給另一個(gè)變量的時(shí)候毙沾,python并沒有拷貝這個(gè)對象骗卜,而只是拷貝了這個(gè)對象的引用
1.賦值:
將一個(gè)變量賦值給另一個(gè)變量,這個(gè)過程叫做賦值。賦值會(huì)導(dǎo)致多個(gè)變量同時(shí)指向一塊內(nèi)存寇仓,所以此時(shí)不管是 == 或者 is 都返回 True
通俗的說直接賦值是,傳遞對象的引用而已,原始列表改變举户,被賦值的b也會(huì)做相同的改變
賦值.jpg
2.拷貝:
就是一個(gè)變量的值傳給另外一個(gè)變量。在python 中 id() 方法可以查看存放變量的內(nèi)存地址遍烦。
(1)淺拷貝:
淺拷貝是對于一個(gè)對象的頂層拷貝俭嘁。
通俗的理解是:拷貝了引用,并沒有拷貝內(nèi)容
淺拷貝01.jpg
淺拷貝02.jpg
copy淺拷貝乳愉,沒有拷貝子對象兄淫,所以原始數(shù)據(jù)改變屯远,子對象會(huì)改變
淺拷貝03.jpg
(2)深拷貝:
深拷貝是對于一個(gè)對象所有層次的拷貝(遞歸)
深拷貝蔓姚,包含對象里面的自對象的拷貝,所以原始對象的改變不會(huì)造成深拷貝里任何子元素的改變
深拷貝.jpg
(3)拷貝的其他方式:
注意常量類型的深淺拷貝問題(如字符串慨丐、數(shù)值型坡脐、元組)
常量.jpg