Assignment vs. Shallo.Copy vs. Deep Copy in Python


Shallo. Copy

en shallo. copy konstruerer et nyt sammensat objekt og indsætter derefter (så vidt muligt) referencer til de objekter, der findes i originalen.

Vi har tre forskellige måder at skabe en overfladisk kopi:

Her, er alle de ovennævnte lister indeholder de samme værdier, som den oprindelige liste:

>>> print(nums == m1 == m2 == m3)
True

Men hukommelse adressen af hver er forskellige.,

dette betyder, at hver listes objekt denne gang har sin egen, uafhængige hukommelsesadresse.

nu flytter vi til den mere interessante del. Hvis den oprindelige liste er et sammensat objekt (f.eks. en liste over lister), henviser nye listeelementer efter en overfladisk kopi stadig til de originale elementer.

så hvis du ændrer de mutable elementer som lister, vil ændringerne blive afspejlet på de oprindelige elementer., Lad os se på nedenstående eksempel for at få en bedre forståelse:

Som du kan se i ovenstående eksempel, mens vi er ændring af den interne liste elementer i den nye liste, det er opdateret på den oprindelige liste også, fordi a og b stadig, at den samme hukommelse adresse (oprindelige liste).

Så, den nye liste b har sin egen hukommelse, adresse, men dens elementer ikke., Dette skyldes, at i lav kopi, i stedet for at kopiere listens elementer til det nye objekt, kopierer det simpelthen referencerne til deres hukommelsesadresser.

derfor, mens vi foretager ændringer i det originale objekt, afspejles det i de kopierede objekter og vice versa.

Dette er et kendetegn ved en lav kopi.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Videre til værktøjslinje