"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como criar cópias verdadeiramente independentes de objetos em Python?

Como criar cópias verdadeiramente independentes de objetos em Python?

Publicado em 2024-11-16
Navegar:692

How to Create Truly Independent Copies of Objects in Python?

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.

Tutorial mais recente Mais>

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