chevron_left

Python 语言基础面试复习

免费
第 1.6 回

教程文档

Python 语言基础面试复习 - 赋值与深浅拷贝

2023年11月17日
Python 语言基础面试复习

赋值与深浅拷贝

赋值

在 Python 中,对象的赋值就是简单的对象引用,这点和 C++ 不同,如下所示:

a = [1,2,"hello",['python', 'C++']]
b = a

在上述情况下,a 和 b 是一样的,他们指向同一片内存,b 不过是 a 的别名,是引用。

我们可以使用 b is a 去判断,返回 True,表明他们地址相同,内容相同,也可以使用 id() 函数来查 看两个列表的地址是否相同。

赋值操作 (包括对象作为参数、返回值) 不会开辟新的内存空间,它只是复制了对象的引用。也就是说除了 b 这个名字之外,没有其他的内存开销。

修改了 a,也就影响了 b,同理,修改了 b,也就影响了 a。

浅拷贝 (shallow copy)

浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。

浅拷贝有三种形式:切片操作、工厂函数、copy 模块中的 copy 函数。

比如上述的列表 a;

  • 切片操作:b = a[:] 或者 b = [x for x in a];
  • 工厂...

课程介绍

Python 工作面试必备复习知识