Python 的赋值、浅拷贝、引用机制
场景 A:赋值,直接对 lst.append(xxx)
lst1 = []
# 变量赋值
def func1():
lst1.append("A")
func1()
print(f"赋值示例:\n lst1:{lst1}")
结论:全局 list 会改变。因为你是对这个 lst 对象内部进行操作(追加元素),而不是改变引用。
场景 B:浅拷贝,局部 copy = list,然后 copy.append(xxx)
lst2 = []
def func2():
copy_lst = lst2.copy()
copy_lst.append("B")
return copy_lst
new_lst = func2()
print(new_lst)
print(lst2)
结论:全局 list 不会改变。
因为 copy_lst = lst2.copy() 复制一个新列表,不会影响原列表
场景C:深拷贝:嵌套列表场景
# 深拷贝,嵌套列表场景
lst3 = [[1, 2], [3, 4]]
def func3():
copy_lst = copy.deepcopy(lst3)
copy_lst[0].append(88)
return copy_lst
new_lst = func3()
print(new_lst)
结论:深拷贝外层和内层都复制,不会修改原列表;而浅拷贝只复制外层列表,内存列表还是共用的
深拷贝后的列表: [[1, 2, 99], [3, 4]]
原列表: [[1, 2], [3, 4]]
- THE END -
最后修改:2026年5月30日
非特殊说明,本博所有文章均为博主原创。
共有 0 条评论