一、什么是对象的引用
在 Python 中,对象的引用是指变量指向内存中某个对象的地址或标识符。当你创建一个新的对象(比如一个整数、字符串、列表等),Python 会分配一块内存来存储这个对象,并且给这个对象分配一个唯一的标识符(也就是对象的地址)。当你将这个对象赋值给一个变量时,实际上这个变量就存储了对该对象的引用,而不是对象本身。这意味着变量并不直接包含对象的值,而是指向存储这个值的内存地址。
举例:
在这个例子中,[1, 2, 3]
是一个列表对象,在内存中有自己的地址。x 这个变量包含了对这个列表对象的引用,而不是列表对象本身。如果你创建一个新的变量 y = x,那么 y 实际上也会指向同一个列表对象,即它们共享相同的引用。图示:
因此,对于可变对象(如列表、字典等), 如果多个变量引用了同一个对象,当你通过一个变量修改这个对象时,其他引用了相同对象的变量也会反映出这个修改。这是因为它们引用的是同一个对象,而不是对象的副本。对于不可变对象(如整数、字符串等), 由于对象本身是不可变的,任何修改都会导致新对象的创建,而不会影响原始对象,因为对不可变对象的修改实际上是创建了一个新对象并将变量重新指向新对象的地址。举例:
图示:
补充:在 Python 中,== 和 is 是用于比较对象的运算符,但它们的作用不同:
① == 操作符用于比较两个对象的值是否相等。
② is 操作符用于检查两个对象是否是同一个对象,也就是比较它们的身份标识(即内存地址/引用)是否相同。示例如下:
二、深拷贝和浅拷贝
2.1 浅拷贝(Shallow Copy)
2.2 深拷贝(Deep Copy)
2.3 copy.copy和copy.deepcopy的区别
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。