Sobes.tech
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.