Sobes.tech
Junior — Middle

Wat is het verschil tussen een diepe en een oppervlakkige kopie van objecten in Python, en wanneer moet je deze gebruiken?

sobes.tech AI

Antwoord van AI

In Python creëert een oppervlakkige kopie (shallow copy) een nieuw object, maar de geneste objecten binnenin worden niet gekopieerd, ze worden slechts doorverwezen. Een diepe kopie (deep copy) maakt een nieuw object en kopieert recursief alle geneste objecten, waardoor een volledig onafhankelijke structuur ontstaat.

Wanneer gebruiken:

  • Een oppervlakkige kopie is geschikt als de geneste objecten niet zullen veranderen of als wijzigingen in de geneste objecten in beide kopieën moeten worden weerspiegeld.
  • Een diepe kopie is nodig wanneer een volledig onafhankelijke kopie van het object met alle geneste elementen vereist is, zodat wijzigingen in de kopie het origineel niet beïnvloeden.

Voorbeeld:

import copy

original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)

shallow[0][0] = 100
print(original)  # [[100, 2], [3, 4]] - origineel is gewijzigd

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - origineel is niet gewijzigd

Dus, de keuze tussen oppervlakkige en diepe kopie hangt af van de vereisten voor de onafhankelijkheid van de kopie.