在 Python 中,對象賦值實際上是對象的引用。當創(chuàng)建一個對象,然后把它賦給另一個變量的時候,Python 并沒有拷貝這個對象,而只是拷貝了這個對象的引用,我們稱之為淺拷貝。
在 Python 中,為了使當進行賦值操作時,兩個變量互補影響,可以使用 copy 模塊中的 deepcopy 方法,稱之為深拷貝。
append() 函數(shù)
當 list 類型的對象進行 append 操作時,實際上追加的是該對象的引用。
id()?函數(shù):返回對象的唯一標識,可以類比成該對象在內存中的地址。
>>>alist = []
>>> num = [2]
>>> alist.append( num )
>>> id( num ) == id( alist[0] )
True
如上例所示,當 num 發(fā)生變化時(前提是 id(num) 不發(fā)生變化),alist 的內容隨之會發(fā)生變化。往往會帶來意想不到的后果,想避免這種情況,可以采用深拷貝解決:
alist.append( copy.deepcopy( num ) )
? 版權聲明
本頁內容中文字和圖片均整理自互聯(lián)網,不代表本站立場,版權歸原作者所有,如有侵權,請聯(lián)系admin#aiodt.com刪除。
相關文章
暫無評論...