Duplicando objetos em Python: um guia abrangente
Criar cópias de objetos é uma tarefa fundamental na programação Python, especialmente quando se trata de dados complexos estruturas. Este artigo investiga as complexidades da cópia de objetos em Python, concentrando-se particularmente na criação de objetos independentes que não são afetados pelas alterações feitas no original.
Cópia superficial e profunda
Em Python, existem dois métodos principais para copiar objetos: cópia superficial e cópia profunda. A cópia superficial cria um novo objeto que faz referência aos mesmos campos imutáveis (por exemplo, inteiros, strings) que o original, mas cria novas cópias de campos mutáveis (por exemplo, listas, dicionários).
Por exemplo, considere o seguinte trecho de código:
original_list = [1, 2, 3]
new_list = original_list[:] # Shallow copy
Embora new_list e original_list pareçam ser objetos separados, quaisquer alterações feitas em uma lista serão refletidas na outra, pois ambas fazem referência aos mesmos dados subjacentes.
Criando objetos totalmente independentes
Para criar objetos verdadeiramente independentes, devemos recorrer à cópia profunda. Isso envolve a criação de uma nova cópia de cada campo, incluindo estruturas mutáveis aninhadas. A função copy.deepcopy() do Python fornece essa funcionalidade.
Vamos modificar nosso exemplo anterior:
import copy
original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)
Agora, se fizermos uma alteração em new_list, isso não afetará original_list:
new_list[2].append(6)
print(original_list) # Output: [1, 2, [4, 5]]
print(new_list) # Output: [1, 2, [4, 5, 6]]
Conclusão
Ao aproveitar a função copy.deepcopy(), os programadores pode criar cópias totalmente independentes de objetos, garantindo que as alterações feitas em um não afetem o outro. Compreender a diferença entre cópia superficial e profunda é crucial para a manipulação eficaz de objetos em Python.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3