Python的秘密生活:危险的反射

发布: (2026年1月8日 GMT+8 11:19)
2 min read
原文: Dev.to

Source: Dev.to

理解 Python 别名、引用以及浅拷贝的陷阱

Timothy 需要向列表中添加临时客人,但不想修改原始的 master_list。他以为把列表赋值给新变量就会创建一个副本:

# Timothy's "Safety" Plan
master_list = ["Alice", "Bob", "Carol"]
draft_list = master_list

注意: 上述所有方法都会产生 浅拷贝。对于只包含不可变对象(例如字符串、数字)的列表,这已经足够。如果列表中包含可变对象(例如其他列表、字典),内部对象仍然是共享的。在这种情况下需要使用 深拷贝copy.deepcopy)。

要点

  • 赋值 (b = a) 只会创建别名,而不是副本。
  • 使用切片、.copy()list() 构造函数可以得到浅拷贝。
  • 处理嵌套的可变结构时,要注意浅拷贝的局限性。

“名字不是事物本身,地图也不是领土。” – Margaret

下一集: “套娃陷阱” – 探索深拷贝和嵌套可变对象。

Back to Blog

相关文章

阅读更多 »