Cópia profunda do Python

Cópia profunda do Python
Você pode ter passado pelo conceito de copiar arquivos e pastas de um lugar para outro dentro do seu sistema operacional específico. Esta operação é muito fácil, pois não exige que você execute algum código. Assim como os sistemas de arquivos, a programação também suporta copiar objetos diferentes. A linguagem python também permite copiar um objeto para outro usando cópias profundas, cópias rasas e métodos de atribuição. Uma cópia profunda é o tipo de cópia em que as propriedades de um objeto de réplica não usam referências semelhantes que as propriedades de um objeto original ocupa.

Em outras palavras, a cópia de objeto recém -feita ocupará separadamente suas fontes e propriedades e será completamente independente do objeto original. Dentro deste guia hoje, discutiremos o uso de cópias profundas no código Python para copiar um objeto para o mesmo tipo de outro objeto. Antes disso, precisamos instalar a nova versão do Python em nosso sistema Linux para que possamos implementar exemplos de python. Use a instrução "APT" abaixo da palavra -chave "python3" para configurá -la totalmente. Adicione a senha da sua conta do sistema e pressione a chave "Enter" para concluí -la.

Você precisa abrir rapidamente seu shell Linux com o “ctrl+alt+t.”Vamos começar a partir da criação de uma“ cópia.arquivo python py ”. Utilizamos o comando Linux "Touch" no shell da linha de comando. Isso será criado em 3 segundos, e podemos abri -lo com qualquer editor como vim, texto e nano. Estamos abrindo nosso novo arquivo Python no editor "GNU Nano" para criar o documento Python após a consulta mostrada pelo Belew.

Exemplo 01: cópia simples/superficial usando o operador de atribuição

Iniciaremos nosso primeiro exemplo de cópia usando o método simples que é bastante popular entre diferentes desenvolvedores. Este método usa o operador de atribuição simples “=” para copiar o objeto para outro. Não haverá uso de nenhum método interno para copiar um objeto. Depois que o arquivo Python vazio é lançado no Nano deverá, adicionamos o suporte Python em sua primeira linha. Depois disso, a declaração de impressão afirma que o objeto será exibido antes de qualquer atualização. Uma lista “L1” é inicializada com números e impressa usando a instrução Print. Copiamos o conteúdo da lista L1 para outra lista L2 usando o operador de atribuição “= =.”As próximas duas declarações impressas exibem a segunda lista após copiar, e o terceiro mostra que vamos executar atualizações. Substituímos o valor no índice 5 da lista 2 por outro valor. Depois disso, exibimos as duas listas, L1 e L2, novamente. As duas últimas declarações impressas exibem os "IDs" de ambas as listas separadamente. Salve o código com Ctrl+S e saia com Ctrl+X.

Nós executamos nosso arquivo python “cópia.py ”com python3. Ambas as listas foram exibidas antes de atualizar, eu.e., os mesmos valores. Depois de agregar valor no índice 5 da Lista 2, imprimimos as duas listas novamente. A exibição de ambas as listas mostra que a alteração na lista de réplicas está atualizando a lista original, eu.e., as mesmas listas atualizadas exibidas. Além disso, os IDs de ambas as listas são iguais, o que significa que ambos estão usando os mesmos recursos por meio de referências.

Exemplo 02: cópia profunda

Para usar o conceito de cópia profunda em Python, devemos utilizar o módulo "cópia" em nosso arquivo de código. Este módulo de cópia usará suas funções internas para executar a cópia profunda no Python. Então, atualizamos um pouco nosso arquivo python antigo. Adicionou a extensão Python e importou o módulo "cópia" usando a palavra -chave "importar.”Use um nome de arquivo diferente e não gosto de“ cópia.py ”como será problemático e cometer erros. Inicializamos uma lista L1 com diferentes valores numéricos e de string após a declaração de impressão afirma que realizaremos uma cópia profunda.

A lista foi exibida usando a cláusula de impressão. Para usar a função cópia profunda () para copiar a lista L1 para a lista L2, precisamos usar o módulo "cópia" como uma palavra -chave com um ponto antes da chamada de função. Dentro dos parâmetros de função DeepCopy (), estamos assumindo a lista L1. O operador de atribuição é usado para adicionar a cópia na lista L2. Depois de executar uma cópia profunda, a declaração de impressão é novamente usada para exibir a lista L2 no shell. Depois de tudo isso, estamos anexando dois valores na lista L1 usando a função append () do Python. As duas últimas declarações de impressão são usadas para exibir o conteúdo das duas listas: L1 e L2 mais uma vez.

Depois de executar este código atualizado, temos as duas listas exibidas no início depois de executar a cópia profunda. Ao anexar 2 novos valores à primeira lista, exibimos as duas listas novamente. A exibição de ambas as listas mostra que a atualização na lista original não causa nenhuma alteração na lista2. Isso indica que a cópia profunda criará recursos completamente diferentes da fonte do objeto original a ser usado para uma réplica. É por isso que a atualização em um não muda a outra.

Exemplo 03: cópia profunda vs cópia superficial

Para demonstrar a cópia profunda em profundidade, estaremos comparando-a com o conceito de cópia superficial. Então, atualizamos nosso código e inicializamos uma lista aninhada L1 depois de importar o módulo "cópia", eu.e., Lista dentro de uma lista. Para executar uma cópia rasa, usamos a função Copy () do módulo "Copy" e usando a Lista L1 para fazer uma nova lista L2.

Ambas as listas foram impressas usando cláusulas impressas. Atualizamos o valor da lista 2 no índice 1 do seu índice de lista 1. Novamente usei as declarações de impressão para ver as alterações nas duas listas.

Temos a lista L1 e L2 exibida após cópia rasa. Ao atualizar a lista L2, exibimos novamente as duas listas e descobrimos que uma mudança em um está fazendo com que o outro mude.

Atualizamos o código novamente e alteramos o texto na primeira declaração de impressão para “cópia profunda.”Realizou a cópia profunda usando a função Deepcopy () do módulo“ cópia ”e copiou o conteúdo de uma lista L1 para a nova lista L2. Imprimiu as duas listas em linhas separadas. Realizou a atualização na Lista L2 alterando o valor no índice 1 do seu índice de lista 1 e exibi as duas listas novamente.

Usando a função DeepCopy (), copiamos a lista L1 para a nova lista L2. Após a atualização, sabemos que a mudança em um objeto aninhado não afeta o outro objeto.

Conclusão:

Trata -se de usar o conceito de cópia profunda para criar uma cópia profunda de um objeto em Python usando o módulo "cópia" do Python. Discutimos esse conceito minuciosamente usando a função DeepCopy () e discutimos o método de cópia simples do Python antes. Além disso, comparamos o conceito de cópia profunda com uma cópia superficial no exemplo python. Isso foi feito para torná -lo mais claro.