ในขณะที่อ่านเอกสารสำหรับdict.copy()
มันบอกว่ามันทำสำเนาตื้นของพจนานุกรม กันไปสำหรับหนังสือที่ฉันกำลังติดตาม (อ้างอิง Python ของ Beazley) ซึ่งกล่าวว่า:
กระบวนการ m.copy () วิธีการทำสำเนาตื้นของรายการที่มีอยู่ในวัตถุแผนที่และวางไว้ในวัตถุแผนที่ใหม่
พิจารณาสิ่งนี้:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
ดังนั้นฉันจึงสันนิษฐานว่าสิ่งนี้จะอัปเดตค่าของoriginal
(และเพิ่ม 'c': 3) เช่นกันเนื่องจากฉันทำสำเนาตื้น เช่นถ้าคุณทำเพื่อรายการ:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
ทำงานได้ตามที่คาดไว้
เนื่องจากทั้งคู่เป็นสำเนาตื้นทำไมจึงdict.copy()
ไม่ทำงานตามที่ฉันคาดไว้ หรือความเข้าใจของฉันเกี่ยวกับการทำสำเนาแบบตื้นและลึกนั้นมีข้อบกพร่อง