日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

假設你去面試 Python 開發崗,面試官如果對基礎比較看重的話,那么很可能會問你這樣的問題

“談談你對 Python 中的淺拷貝和深拷貝的理解?”

若平時你在開發中像我一樣,過度使用 deepcopy,以至于忘記了淺拷貝(shallow copy)和深拷貝(deep copy)的區別,那很可能要栽大跟頭了。建議在讀這篇文章之前,看下我之前寫的文章《你真的理解Python中的賦值、傳參嗎?》,它有助于你更快的理解本文

Python 的引用計數

首先我們要知道,Python 內不可變對象的內存管理方式是引用計數。因此,我們在談論拷貝時,其實談論的主要特點都是基于可變對象的。我們來看下面這段代碼

輸出如下

因為我們這里操作的是不可變對象,Python 用引用計數的方式管理它們,所以 Python 不會對值相同的不可變對象,申請單獨的內存空間。只會記錄它的引用次數

淺拷貝

我們先來比較一下淺拷貝和賦值在可變對象上的區別

輸出結果

發現沒有,賦值就是對物體進行貼標簽操作,作用于同一物體。而淺拷貝則會創建一個新的對象,至于對象中的元素,它依然會引用原來的物體,我們再來看一段例子

輸出如下

操作不可變對象時,由于引用計數的特性,被拷貝的元素改變時,就相當于撕掉了原來的標簽,重新貼上新的標簽一樣,對于我們已拷貝的元素沒有任何影響。因此在操作不可變對象時,淺拷貝和深拷貝是沒有區別的

輸出結果

由于淺拷貝會使用原始元素的引用(內存地址)。所以在在操作被拷貝對象內部的可變元素時,其結果是會影響到拷貝對象的

深拷貝

深拷貝遇到可變對象,則又會進行一層對象創建,所以你操作被拷貝對象內部的可變對象,不影響拷貝對象內部的值

輸出如下

總結

因此,在下次我們遇到這類問題時,我們說出以下關鍵點,基本就很穩了

分享到:
標簽:拷貝 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定