Głęboka kopia Pythona

Głęboka kopia Pythona
Być może przeszedłeś koncepcję kopiowania plików i folderów z jednego miejsca do drugiego w określonym systemie operacyjnym. Ta operacja jest dość łatwa, ponieważ nie wymaga wykonania jakiegoś kodu. Podobnie jak systemy plików, programowanie obsługuje również kopiowanie różnych obiektów. Język Pythona pozwala nam również skopiować jeden obiekt do drugiego za pomocą głębokiej kopii, płytkiej kopii i metod przypisania. Głęboka kopia to rodzaj kopii, w której właściwości obiektu repliki nie używają podobnych odniesień do właściwości oryginalnego obiektu.

Innymi słowy, nowo wykonana kopia obiektu osobno zajmuje swoje źródła i właściwości i będzie całkowicie niezależna od oryginalnego obiektu. W ramach tego przewodnika będziemy omawiać użycie głębokiej kopii w kodzie Python do kopiowania jednego obiektu do tego samego typu innego obiektu. Wcześniej musimy zainstalować nową wersję Pythona w naszym systemie Linux, abyśmy mogli zaimplementować przykłady Python. Użyj instrukcji „Apt” za pomocą słowa kluczowego „Python3”, aby w pełni skonfigurować ją. Dodaj hasło do konta systemowego i naciśnij klucz „Wprowadź”, aby je wypełnić.

Musisz szybko otworzyć powłokę Linux za pomocą „ctrl+alt+t.„Zaczniemy od tworzenia„ kopii.plik Python PY ”. Wykorzystaliśmy polecenie Linuxa „Touch” na powładzie wiersza polecenia. Zostanie to utworzone za 3 sekundy i możemy otworzyć go z dowolnym edytorem, takim jak VIM, tekst i nano. Otwieramy nasz nowy plik Python w edytorze „GNU Nano”, aby utworzyć dokument Python po zapytaniu Pheld-Below.

Przykład 01: Prosta/płytka kopia za pomocą operatora przypisania

Rozpoczniemy nasz pierwszy przykład kopii przy użyciu prostej metody, która jest dość popularna wśród różnych programistów. Ta metoda używa prostego operatora przypisania „=” do skopiowania obiektu do innego. Nie będzie zastosować żadnej wbudowanej metody kopiowania obiektu. Po uruchomieniu pustego pliku Pythona w nano. Następnie instrukcja drukowania stwierdza, że ​​obiekt zostanie wyświetlony przed jakąkolwiek aktualizacją. Lista „L1” jest inicjowana liczbami i wydrukowana za pomocą instrukcji drukowania. Skopiowaliśmy zawartość listy L1 do innej listy L2 za pomocą operatora przypisania „=.„Następne 2 instrukcje drukowania wyświetlają drugą listę po skopiowaniu, a trzeci pokazuje, że zamierzamy wykonywać aktualizacje. Zastąpiliśmy wartość w indeksie 5 z listy 2 inną wartością. Następnie ponownie wyświetliśmy obie listy, L1 i L2. Ostatnie 2 instrukcje drukowania wyświetlają „identyfikatory” obu list osobno. Zapisz kod za pomocą Ctrl+S i wyjdź z Ctrl+X.

Wykonaliśmy nasz plik Python „Kopia.py ”z python3. Obie listy zostały wyświetlone przed aktualizacją, ja.mi., te same wartości. Po dodaniu wartości w indeksie 5 z listy 2, ponownie wydrukowaliśmy obie listy. Wyświetlanie obu list pokazuje, że zmiana na liście repliki aktualizuje oryginalną listę, i.mi., Wyświetlone te same zaktualizowane listy. Ponadto identyfikatory obu list są takie same, co oznacza, że ​​oba używają tych samych zasobów poprzez odniesienia.

Przykład 02: głęboka kopia

Aby użyć koncepcji głębokiej kopii w Python, musimy użyć modułu „Kopiuj” w naszym pliku kodu. Ten moduł kopii wykorzysta wbudowane funkcje do wykonania głębokiej kopii w Pythonie. Więc trochę zaktualizowaliśmy nasz stary plik Python. Dodano rozszerzenie Pythona i zaimportował moduł „Kopiuj” za pomocą słowa kluczowego „Importuj.„Użyj innej nazwy pliku, a nie„ Kopiuj.py ”, ponieważ będzie to problematyczne i popełnia błędy. Zainicjowaliśmy listę L1 z różnymi wartościami numerycznymi i ciągami po instrukcji drukowania, że ​​wykonamy głęboką kopię.

Lista została wyświetlona za pomocą klauzuli drukowania. Aby użyć funkcji Deep Copy (), aby skopiować listę L1 do listy L2, musimy użyć modułu „Kopiuj” jako słowo kluczowe z kropką przed wywołaniem funkcji. W ramach parametrów funkcji DeepCopy (), pobraliśmy listę L1. Operator przypisania służy do dodania kopii do listy L2. Po wykonaniu głębokiej kopii instrukcja drukowania jest ponownie używana do wyświetlania listy L2 na powładzie. Po tym wszystkim dołączyliśmy dwie wartości na liście L1 przy użyciu funkcji Python append (). Ostatnie 2 instrukcje drukowania służą do wyświetlania zawartości obu list: L1 i L2.

Po uruchomieniu tego zaktualizowanego kodu otrzymaliśmy dwie listy na początku po wykonaniu głębokiej kopii. Przyjmując 2 nowe wartości do pierwszej listy, ponownie wyświetliśmy obie listy. Wyświetlanie obu list pokazuje, że aktualizacja na oryginalnej liście nie powoduje żadnej zmiany listy2. Wskazuje to, że głęboka kopia utworzy zupełnie inne zasoby od źródła oryginalnego obiektu, które należy użyć do repliki. Właśnie dlatego aktualizacja w jednym nie zmienia drugiej.

Przykład 03: głęboka kopia vs płytka kopia

Aby dogłębnie zademonstrować głęboką kopię, będziemy go porównać z koncepcją płytkiej kopii. Zaktualizowaliśmy więc nasz kod i zainicjowaliśmy zagnieżdżoną listę L1 po zaimporowaniu modułu „Kopiuj”, i.mi., Lista na liście. Aby wykonać płytką kopię, używamy funkcji kopii () modułu „kopiuj” i używaliśmy listy L1, aby stworzyć nową listę L2.

Obie listy zostały wydrukowane za pomocą klauzul drukowanych. Zaktualizowaliśmy wartość listy 2 na indeksie 1 jej indeksu 1. Ponownie użyłem instrukcji drukowania, aby zobaczyć zmiany na obu listach.

Mamy listę L1 i L2 wyświetlonych po płytkiej kopii. Na liście aktualizacji L2 ponownie wyświetliśmy oba listy i stwierdziliśmy, że zmiana jednej powoduje zmianę drugiego.

Ponownie zaktualizowaliśmy kod i zmieniliśmy tekst w pierwszej instrukcji drukowania na „głęboka kopia.”Wykonał głęboką kopię za pomocą funkcji DeepCopy () modułu„ Kopiuj ”i skopiował zawartość listy L1 na nową listę L2. Wydrukowano obie listy w osobnych wierszach. Wykonał aktualizację na liście L2, zmieniając wartość w indeksie 1 indeksu listy 1 i ponownie wyświetlał obie listy.

Korzystając z funkcji DeepCopy (), skopiowaliśmy listę L1 do nowej listy L2. Po aktualizacji wiemy, że zmiana jednego zagnieżdżonego obiektu nie wpływa na drugi obiekt.

Wniosek:

Chodzi o użycie koncepcji głębokiej kopii do utworzenia głębokiej kopii jednego obiektu w Pythonie za pomocą modułu „Kopiuj” Pythona. Omówiliśmy tę koncepcję dokładnie za pomocą funkcji DeepCopy () i wcześniej omówiliśmy prostą metodę kopiowania Pythona. Ponadto porównaliśmy koncepcję głębokiej kopii z płytką kopią w przykładzie Pythona. Zostało to zrobione, aby było bardziej jasne.