Med andre ord, den nyopplagte objektkopien vil ha separat sine kilder og egenskaper og vil være helt uavhengig av det opprinnelige objektet. Innenfor denne guiden i dag vil vi diskutere bruken av dyp kopi i Python -kode for å kopiere ett objekt til samme type et annet objekt. Før det må vi installere Pythons nye versjon på Linux -systemet vårt slik at vi kan implementere Python -eksempler. Bruk under "apt" instruksjon med nøkkelordet "Python3" for å konfigurere det fullt ut. Legg til systemkontokassordet ditt og trykk på nøkkelen "Enter" for å fullføre det.
Du må raskt åpne opp Linux -skallet ditt med “Ctrl+Alt+T.”Vi starter fra å lage en“ kopi.py ”Python -fil. Vi har brukt Linux “Touch” -kommandoen på kommandolinjeskallet. Dette vil bli opprettet om 3 sekunder, og vi kan åpne den med hvilken som helst redaktør som Vim, Text og Nano. Vi åpner vår nye Python-fil i “GNU Nano” -redigereren for å opprette Python-dokumentet etter den vist-below-spørringen.
Eksempel 01: Enkel/grunne kopi ved hjelp av oppgavoperatør
Vi starter vårt første eksempel på kopi ved å bruke den enkle metoden som er ganske populær blant forskjellige utviklere. Denne metoden bruker den enkle tildelingsoperatøren “=” for å kopiere objektet til en annen. Det vil ikke være noen bruk av noen innebygd metode for å kopiere et objekt. Etter at den tomme Python-filen er lansert i Nano skal, har vi lagt til Python-støtte på sin første linje. Etter dette sier utskriftserklæringen at objektet vil vises før noen oppdatering. En liste “L1” initialiseres med tall og skrevet ut ved hjelp av utskriftserklæringen. Vi har kopiert innholdet i liste L1 til en annen liste L2 ved å bruke tildelingsoperatøren “=.”De neste to utskriftsuttalelsene viser den andre listen etter kopiering, og den tredje viser at vi skal utføre oppdateringer. Vi har erstattet verdien ved indeks 5 i liste 2 med en annen verdi. Etter det har vi vist både lister, L1 og L2, igjen. De to siste utskriftsuttalelsene viser “ID -ene” for begge listene separat. Lagre koden med Ctrl+S og avslutning med Ctrl+x.
Vi har utført Python -filen vår “Kopi.py ”med python3. Begge listene har blitt vist før oppdatering, i.e., de samme verdiene. Etter å ha lagt til verdi på indeks 5 på liste 2, skrev vi ut begge listene igjen. Visningen av begge listene viser at endringen i replika -listen oppdaterer den opprinnelige listen, i.e., de samme oppdaterte listene som vises. ID -ene for begge listene er også de samme, noe som betyr at begge bruker de samme ressursene via referanser.
Eksempel 02: Dyp kopi
For å bruke Deep Copy -konseptet i Python, må vi bruke “Copy” -modulen i kodefilen vår. Denne kopimodulen vil bruke sine innebygde funksjoner for å utføre den dype kopien i Python. Så vi har oppdatert vår gamle Python -fil litt. Lagt til Python -utvidelsen og importerte “Copy” -modulen ved å bruke nøkkelordet “Import.”Bruk et annet filnavn og ikke som“ Kopier.py ”da det vil være problematisk og gjøre feil. Vi har initialisert en liste L1 med forskjellige numeriske og strengverdier etter at utskriftserklæringen sier at vi vil utføre en dyp kopi.
Listen har blitt vist ved hjelp av utskriftsklausulen. For å bruke Deep Copy () -funksjonen for å kopiere liste L1 for å liste L2, må vi bruke modulen “Copy” som et nøkkelord med en prikk før funksjonsanropet. Innenfor DeepCopy () -funksjonsparametrene har vi tatt liste L1. Oppdragsoperatøren brukes til å legge til kopien i listen L2. Etter å ha utført en dyp kopi, brukes utskriftserklæringen igjen til å vise liste L2 på skallet. Etter alt dette har vi lagt til to verdier i liste L1 ved å bruke Python -append () -funksjonen til Python. De to siste utskriftsuttalelsene brukes til å vise innholdet i både listene: L1 og L2 nok en gang.
Etter å ha kjørt denne oppdaterte koden, har vi fått de to listene som ble vist i starten etter å ha utført den dype kopien. Mens vi legger til to nye verdier til den første listen, har vi vist begge listene igjen. Visningen av begge listene viser at oppdateringen i den opprinnelige listen ikke forårsaker noen endring i LIST2. Dette indikerer at den dype kopien vil skape helt andre ressurser fra kilden til det opprinnelige objektet som skal brukes til en kopi. Dette er grunnen til at oppdateringen i den ene ikke endrer den andre.
Eksempel 03: Dyp kopi vs grunne kopi
For å demonstrere den dype kopien i dybden, vil vi sammenligne den med det grunne kopikonseptet. Så vi har oppdatert koden vår og initialisert en nestet liste L1 etter å ha importert "kopien" -modulen, i.e., Liste i en liste. For å utføre grunne kopi, har vi brukt kopien () -funksjonen til modulen “Copy” og bruker liste L1 for å lage en ny liste L2.
Begge listene er skrevet ut ved hjelp av utskriftsklausuler. Vi har oppdatert verdien av liste 2 ved indeks 1 i listeindeksen 1. Brukte igjen utskriftsuttalelsene for å se endringene i begge listene.
Vi har fått listen L1 og L2 vist etter grunne kopi. Når vi oppdaterer liste L2, har vi igjen vist begge listene og funnet at en endring i den ene får den andre til å endre.
Vi har oppdatert koden igjen og endret teksten i den første utskriftserklæringen til “Deep Copy.”Utførte Deep Copy ved hjelp av DeepCopy () -funksjonen til“ Copy ”-modulen og kopierte innholdet i en liste L1 til ny liste L2. Skrevet ut begge listene på separate linjer. Utførte oppdateringen i liste L2 ved å endre verdien ved indeks 1 i listeindeksen 1 og viste begge listene igjen.
Ved hjelp av DeepCopy () -funksjonen har vi kopiert liste L1 til ny liste L2. Etter oppdateringen vet vi at endring i det ene nestet objekt ikke påvirker det andre objektet.
Konklusjon:
Dette handler om å bruke Deep Copy -konseptet for å lage en dyp kopi av ett objekt i Python ved å bruke "Copy" -modulen til Python. Vi har diskutert dette konseptet grundig ved bruk av DeepCopy () -funksjonen og diskutert den enkle kopimetoden til Python før. Vi har også sammenlignet Deep Copy -konseptet med et grunt eksemplar i Python -eksemplet. Dette er gjort for å gjøre det mer tydelig.