开发文章

Python中的浅拷贝与深拷贝

C语言与Python的对比

例子1:

复制内容到剪贴板
  1. >>> a = 3  
  2. >>> b = a  
  3. >>> b = 5  
  4. >>> a  
  5. 3  

Python的内存中的操作:

Python的内存中的操作.png

C的内存操作:

C的内存操作.png

例子

例子1:

复制内容到剪贴板
  1. >>> a = 3  
  2. >>> b = a  
  3. >>> b = 5  
  4. >>> a  
  5. 3  

Python 中所有的数据都是对象,数字类型也不例外。3 是一个 int 类型的对象,5 也是一个 int 型的对象。

  1. a 指向对象 3
  2. 令 b 也指向 a 所指向的对象 3
  3. 因为对象不可被覆盖(销毁),令 b 指向新对象 5,则只剩下 a 指向对象 3
  4. 输出 a,得到 3

例子2:

复制内容到剪贴板
  1. >>> a = [1, 2, 3]  
  2. >>> b = a  
  3. >>> b[0] = 1024  
  4. >>> a  
  5. [1024, 2, 3]  
  1. 令 a 指向一个列表 [1, 2, 3];
  2. 令 b 也指向 a 所指向的列表;
  3. 令 b[0] = 1024,1024 虽然是一个对象,但它并没有试图覆盖b所指向的对象,而是对该对象的第一个元素进行修改。
    修改,而不是覆盖,所以它可以原对象进行操作,而不是令 b 指向修改后的对象。
  4. 所在第四行输出的 a 所指向的列表也发生了变化。

例子3:
对比

复制内容到剪贴板
  1. >>> a = [1, 2, 3]  
  2. >>> def change(t):  
  3.         t[0] = 1024  
  4.   
  5. >>> change(a)  
  6. >>> a  
  7. [1024, 2, 3]  
  8. >>>    
复制内容到剪贴板
  1. >>> a = 5  
  2. >>> def add(n):  
  3.         n = n + 2  
  4.   
  5. >>> add(a)  
  6. >>> a  
  7. 5  

 

感谢 jason_cuijiahui 支持 磐实编程网 原文地址:
blog.csdn.net/jason_cuijiahui/article/details/80043749

文章信息

发布时间:2018-04-22

作者:jason_cuijiahui

发布者:aquwcw

浏览次数: