Sobes.tech
Junior — Middle

Εξηγήστε τι είναι η επιφανειακή αντιγραφή αντικειμένων στην Python και πώς διαφέρει από την βαθιά αντιγραφή.

sobes.tech AI

Απάντηση από AI

Η επιφανειακή αντιγραφή (shallow copy) στην Python δημιουργεί ένα νέο αντικείμενο, αλλά τα εσωτερικά αντικείμενα μέσα σε αυτό δεν αντιγράφονται, απλώς αντιγράφονται οι αναφορές σε αυτά. Δηλαδή, αν μέσα στο αντικείμενο υπάρχουν δομές μεταβλητές (π.χ. λίστες, λεξικά), αυτές θα μοιράζονται μεταξύ του αρχικού και της αντιγραφής.

Η βαθιά αντιγραφή (deep copy) δημιουργεί ένα νέο αντικείμενο και αντιγράφει αναδρομικά όλα τα εσωτερικά αντικείμενα, δημιουργώντας ένα πλήρως ανεξάρτητο αντίγραφο.

Παράδειγμα:

import copy

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

shallow[1].append(4)
print(original)  # Θα εμφανίσει: [1, [2, 3, 4]] — η εσωτερική λίστα άλλαξε και στο αρχικό
print(deep)      # Θα εμφανίσει: [1, [2, 3]] — το βαθύ αντίγραφο δεν άλλαξε

Επομένως, η επιφανειακή αντιγραφή είναι κατάλληλη όταν τα εσωτερικά αντικείμενα δεν αλλάζουν, και η βαθιά — όταν απαιτείται πλήρης ανεξαρτησία του αντιγράφου από το αρχικό.