python——深浅拷贝

一、字符串和数字

  1、存储方式:

    str:一次性创建,不能被修改,只要修改,就是再创建一个字符串

    list:是链表的形式,它存储了上一个元素和下一个元素的位置

  2、深浅拷贝和赋值

    对于数字和字符串,赋值、浅拷贝和深拷贝无意义,因为它们都指向同一个地址

>>> n1 = 55555
>>> n2 = n1
>>> id(n1),id(n2)                       #id(对象)  输出对象值存储的地址
(2301027787888, 2301027787888)
>>> import copy                #导入copy模块
>>> n3 = copy.copy(n1)           #浅拷贝
>>> id(n3)
2301027787888
>>> n4 = copy.deepcopy(n1)        #深拷贝
>>> id(n4)
2301027787888

    结论:拷贝和赋值都指向同一个位置

二、列表、字典和元组

  对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

  1、赋值

    赋值只是创建了一个变量,新的变量还是指向原来的内存地址

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
  
n2 = n1

  

  2、浅拷贝

    浅拷贝:在内存中只额外创建第一层数据

  3、深拷贝

    深拷贝:在内存中将所有数据再创建一遍(除了最底层的数字和字符串)

posted @ 2018-06-08 16:07  tdh_2  阅读(123)  评论(0编辑  收藏  举报