Junior — Middle
Qual é a diferença entre cópia profunda e superficial de objetos em Python, e quando deve-se usá-la?
sobes.tech IA
Resposta da IA
No Python, a cópia superficial (shallow copy) cria um novo objeto, mas os objetos aninhados dentro dele não são copiados, apenas passados por referência. A cópia profunda (deep copy) cria um novo objeto e copia recursivamente todos os objetos aninhados, criando uma estrutura totalmente independente.
Quando usar:
- A cópia superficial é adequada se os objetos aninhados não forem alterados ou se as alterações nos objetos aninhados devem refletir em ambas as cópias.
- A cópia profunda é necessária quando é requerida uma cópia completamente independente do objeto com todos os seus elementos aninhados, para que as alterações na cópia não afetem o original.
Exemplo:
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[0][0] = 100
print(original) # [[100, 2], [3, 4]] - o original mudou
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - o original não mudou
Assim, a escolha entre cópia superficial e profunda depende dos requisitos de independência da cópia.