1. 程式人生 > >深拷貝、淺拷貝、賦值介紹

深拷貝、淺拷貝、賦值介紹

1.賦值,深拷貝,淺拷貝:
    賦值是多個物件指向同一個記憶體空間,多個物件共同操作同一個資料
    拷貝是對記憶體資料的複製,目的是能夠單獨的修改資料
    1.賦值:
        物件之間的賦值本質上是物件之間的引用傳遞,也就是多個物件指向同一個記憶體空間
    2.淺拷貝:
        1.實現步驟:
            1.匯入copy模組
            2.copy.copy(obj)--obj:要拷貝的物件
        2.小結:淺拷貝是對物件的第一層(頂層)拷貝

    3. 深拷貝
        1.深拷貝實現步驟:
             1. 匯入copy模組
             2. copy.deepcopy(obj)
                - obj: 要拷貝的物件
        2.小結: 深拷貝是物件的所有層的拷貝(遞迴拷貝)


    4. 不可變型別(元組,數字,字串)的拷貝
         1> 如果在多層巢狀中都是不可變型別
            淺拷貝與深拷貝都是相同的 ,都不會單獨開闢記憶體空間,而是引用原來的記憶體空間
         2> 如果頂層是不可變型別,但內部元素有嵌入可變型別
             淺拷貝還是不會開闢新的記憶體空間,而是引用原來的記憶體空間
             深拷貝 會拷貝物件的所有層

    5. 其他拷貝方式(列表切片、字典中的copy)
       列表切片、字典中的copy都採用的是淺拷貝, python中記憶體資料的拷貝預設是淺拷貝

    面試題: 
         如何在記憶體中複製一個數據
           淺拷貝或者深拷貝
         切片操作與字典中的拷貝屬於哪種拷貝:
           淺拷貝