列表深拷贝与浅拷贝

Ryder 2025-6-23 16 6/23

Python 的赋值、浅拷贝、引用机制

场景 A:直接对 list.append(xxx)

list = [] # 全局变量 

def func(): 
list.append("A") # 直接修改全局变量的内容

结论:全局 list 会改变。因为你是对这个 list 对象内部进行操作(追加元素),而不是改变引用。

场景 B:局部 copy = list,然后 copy.append(xxx)

list = []

def func():
copy = list # copy 是 list 的另一个名字(指向同一个对象)
copy.append("B") # 等价于 list.append("B")

结论:全局 list 仍会改变。

因为 copy = list 并不是拷贝,而是引用赋值,它们指向同一个对象。所以 copy.append(...) 等价于 list.append(...)

如果你想完全不影响 list,需要:

import copy

def func():
    copy_list = copy.deepcopy(list)
    copy_list.append("D")  # 不会影响 list
- THE END -

Ryder

6月23日10:58

最后修改:2025年6月23日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论