Programiści rozpoczynający naukę programowania w Pythonie z innych języków, takich jak C++ i Java, często są zdezorientowani procesem przekazywania argumentów w Pythonie. Obiektocentryczny model danych i sposób jego podejścia do przypisania są przyczyną zamieszania na poziomie podstawowym.
W artykule omówimy koncepcję jak przekazać wartość przez referencję w Pythonie I spróbuj zrozumieć przykłady przekazywania przez referencje w Pythonie.
Spis treści
- Przekaż przez wartość i przekaż przez referencję w Pythonie
- Zmienna nie jest obiektem
- Co to jest przekazywanie przez referencję w Pythonie?
- Co to jest przekazywanie wartości w Pythonie?
Przekaż przez wartość i przekaż przez referencję w Pythonie
Po przeczytaniu dalej możesz chcieć w coś uderzyć, więc przygotuj się. Model przekazywania argumentów w Pythonie to: ani Przekaż przez wartość, ani Przekaż przez odniesienie, ale jest to Przekaż przez odniesienie do obiektu.
W zależności od typu obiektu przekazywanego w funkcji funkcja zachowuje się inaczej. Obiekty niezmienne pokazują przekazywanie przez wartość, podczas gdy obiekty zmienne pokazują przekazywanie przez referencję.
W poniższym przykładzie możesz sprawdzić różnicę między przekazywaniem wartości a przekazywaniem przez odwołanie:
nazwy miast usa
Python3
def> call_by_value(x):> >x>=> x>*> 2> >print>(>'in function value updated to'>, x)> >return> > def> call_by_reference(>list>):> >list>.append(>'D'>)> >print>(>'in function list updated to'>,>list>)> >return> > my_list>=> [>'E'>]> num>=> 6> print>(>'number before='>, num)> call_by_value(num)> print>(>'after function num value='>, num)> print>(>'list before'>,my_list)> call_by_reference(my_list)> print>(>'after function list is '>,my_list)> |
>
>
Wyjście
number before= 6 in function value updated to 12 after function num value= 6 list before ['E'] in function list updated to ['E', 'D'] after function list is ['E', 'D']>
W powyższym kodzie pokazaliśmy, jak Python wykorzystuje w swoim programie koncepcję obiektu wywołania przez referencję.
Przekazujemy liczbę całkowitą w funkcji call_by_value(). Liczby całkowite są obiektami niezmiennymi, dlatego Python działa według wywołania według wartości, a zmiany dokonane w funkcji nie są odzwierciedlane poza funkcją.
Następnie przekazujemy listę do funkcji poprzez referencję. W funkcji call_by_reference() przekazujemy listę będącą obiektem zmiennym. W tej funkcji Python działa w oparciu o wywołanie przez referencję, a zmiany dokonane wewnątrz funkcji można zobaczyć także poza nią.
Zmienna nie jest obiektem
Tutaj a jest zmienną wskazującą listę zawierającą elementy X i Y. Ale samo w sobie nie jest listą. Rozważmy, że a jest wiadrom zawierającym obiekty X i Y.
a = ['X', 'Y']>

wstaw znak wodny w słowie
Co to jest przekazywanie przez referencję w Pythonie?
Przekazanie przez referencję oznacza, że trzeba przekazać funkcję (odniesienie) do zmiennej, co oznacza, że zmienna już istnieje w pamięci.
Tutaj zmienna (wiadro) jest przekazywana bezpośrednio do funkcji. Zmienna działa jak pakiet dostarczany z zawartością (obiektami).

Na powyższym obrazie kodu zarówno lista, jak i moja_lista są tą samą zmienną kontenerową i dlatego odnoszą się do tego samego obiektu w pamięci. Każda operacja wykonana przez funkcję na zmiennej lub obiekcie zostanie bezpośrednio odzwierciedlona przez osobę wywołującą funkcję. Na przykład funkcja może całkowicie zmienić zawartość zmiennej i skierować ją na zupełnie inny obiekt:

wyłączanie trybu programisty Androida
Ponadto funkcja może ponownie przypisać zawartość zmiennej z takim samym skutkiem jak poniżej:

Podsumowując, w przypadku przekazywania przez odwołanie funkcja i obiekt wywołujący używają tej samej zmiennej i obiektu.
Przekaż referencję w przykładzie Pythona
W tym przykładzie funkcja modyfikacji_list pobiera listę przez odniesienie. Funkcja dodaje ciąg Geeks do przekazanej listy wewnątrz funkcji i wyświetla ją. Ponieważ listy są zmiennymi typami danych, zmiany wprowadzone na liście wewnątrz funkcji są również odzwierciedlane poza funkcją, jak widać w wynikach.
Python3
def> modify_list(x):> >x.append(>'Geeks'>)> >print>(>'Inside function:'>, x)> > my_list>=> [>'Geeks'>,>'for'>]> modify_list(my_list)> print>(>'Outside function:'>, my_list)> |
>
>
Wyjście
Inside function: ['Geeks', 'for', 'Geeks'] Outside function: ['Geeks', 'for', 'Geeks']>
Co to jest przekazywanie wartości w Pythonie?
W tym podejściu przekazujemy kopię the aktualne zmienne w funkcji jako parametr. Dlatego jakakolwiek modyfikacja parametrów wewnątrz funkcji nie będzie odzwierciedlana w rzeczywistej zmiennej.
algorytmy wyszukiwania

To samo dotyczy każdej operacji wykonywanej przez funkcję na zmiennej lub obiekcie

Podsumowując, kopie zmiennych i obiektów w kontekście wywołującego funkcję są całkowicie izolowane.
Przekaż wartość w przykładzie Pythona
Tutaj przekażemy liczbę całkowitą x do funkcji, która jest niezmiennym typem danych. Następnie aktualizujemy wartość liczby całkowitej wewnątrz funkcji i drukujemy zaktualizowaną wartość. Zmiany nie są widoczne poza funkcją, ponieważ liczby całkowite są niezmiennymi typami danych.
Python3
def> modify_integer(x):> >x>=> x>+> 10> >print>(>'Inside function:'>, x)> > x>=> 5> print>(>'Before function call:'>, x)> modify_integer(x)> print>(>'After function call:'>, x)> |
>
równość obiektów Java
>
Wyjście:
Before function call: 5 Inside function: 15 After function call: 5>
Programowanie w języku Python wykorzystuje koncepcję obiektu referencyjnego podczas przekazywania wartości do funkcji. W tym artykule podjęto próbę przedstawienia koncepcji przekazywania przez wartość i przekazywania przez referencję w Pythonie. Na przykładach pokazaliśmy różne przypadki przekazywania wartości. Przekazywanie wartości do funkcji w Pythonie różni się od innych języków programowania, ale dzięki temu samouczkowi możesz łatwo zrozumieć tę koncepcję i wdrożyć ją w swojej pracy.
Przeczytaj także:
Czy Python jest wywołaniem przez referencję, czy przez wartość