GeeksforGeeks (Română)

în Python, declarațiile de atribuire nu copiază obiecte, ele creează legături între o țintă și un obiect. Când folosim = utilizatorul operatorului crede că acest lucru creează un obiect nou; Ei bine, nu. creează doar o nouă variabilă care împărtășește Referința obiectului original. Uneori, un utilizator dorește să lucreze cu obiecte mutabile, pentru a face acest lucru, utilizatorul caută o modalitate de a crea „copii reale” sau „clone” ale acestor obiecte., Sau, uneori, un utilizator dorește copii pe care utilizatorul le poate modifica fără a modifica automat originalul în același timp, pentru a face acest lucru, creăm copii ale obiectelor.

o copie este uneori necesară pentru a putea schimba o copie fără a o schimba pe cealaltă. În Python, există două moduri de a crea copii:

  • deep copy
  • Shallow copy

pentru a face aceste copii, folosim modululcopy. Folosim modulul copy pentru operații de copiere superficiale și profunde.,>

li2 = copy.copy(li1)
li3 = copy.deepcopy(li1)



În codul de mai sus, copy() returnează copie superficială a listei și deepcopy() returna o copie profundă de lista.,

deep copy

deep copy este un proces în care procesul de copiere are loc recursiv. Aceasta înseamnă mai întâi construirea unui nou obiect de colecție și apoi popularea recursiv cu copii ale obiectelor copil găsite în original. În cazul copierii profunde, o copie a obiectului este copiată în alt obiect. Aceasta înseamnă că orice modificări aduse unei copii a obiectului nu se reflectă în obiectul original. În python, acest lucru este implementat folosind funcția ” deepcopy ()”.,



Ieșire:

The original elements before deep copying1 2 4 The new list of elements after deep copying 1 2 4 The original elements after deep copying1 2 4 

În exemplul de mai sus, schimbarea făcută în listă nu au efect în alte liste, indică lista este adânc copiat.

copie superficială

o copie superficială înseamnă construirea unui nou obiect de colecție și apoi popularea acestuia cu referințe la obiectele copil găsite în original. Procesul de copiere nu reapare și, prin urmare, nu va crea copii ale obiectelor copil în sine., În cazul unei copii superficiale, o referință a obiectului este copiată în alt obiect. Aceasta înseamnă că orice modificări aduse unei copii a obiectului se reflectă în obiectul original. În python, acest lucru este implementat folosind funcția ” copy ()”.



Ieșire:

The original elements before shallow copying1 2 4 The original elements after shallow copying1 2 4 

În exemplul de mai sus, schimbarea făcută în lista de făcut efectul în altă listă, care indică lista este superficial copiat.,

Puncte Importante:
diferența între suprafață și adâncime copierea este relevantă numai pentru compusul obiecte (obiecte care conțin alte obiecte, cum ar fi liste sau cazuri de clasă):

  • O copie superficială construiește un nou compus obiect și apoi (în măsura posibilului) inserează referințe de obiecte găsite în original.
  • o copie profundă construiește un nou obiect compus și apoi, recursiv, introduce copii în El ale obiectelor găsite în original.

atenție tocilar!, Consolidați-vă fundațiile cu cursul Python Programming Foundation și învățați elementele de bază.

pentru început, pregătirile pentru interviu îmbunătățesc conceptele structurilor de date cu cursul Python DS.

etichete articol:

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *