Junior — Middle
Izskaidrojiet, kas ir virsmas objekta Python un kā tas atšķiras no dziļās kopijas.
sobes.tech AI
Atbilde no AI
Virsmas kopēšana (shallow copy) Python izveido jaunu objektu, bet iekšējie objekti tajā netiek kopēti, tikai tiek kopētas atsauces uz tiem. Tas nozīmē, ka, ja objektā ir maināmas iekšējās struktūras (piemēram, saraksti, vārdnīcas), tās tiks koplietotas starp oriģinālu un kopiju.
Dziļa kopēšana (deep copy) izveido jaunu objektu un rekursīvi kopē visus iekšējos objektus, radot pilnīgi neatkarīgu kopiju.
Piemērs:
import copy
original = [1, [2, 3]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(4)
print(original) # Izvadīs: [1, [2, 3, 4]] — iekšējais saraksts ir mainījies arī oriģinālā
print(deep) # Izvadīs: [1, [2, 3]] — dziļa kopēšana nav mainījusies
Tādēļ virsmas kopēšana ir piemērota, ja iekšējie objekti nemainās, bet dziļa — ja nepieciešama pilnīga neatkarība no oriģināla.