Els desenvolupadors que passen a la programació de Python des d'altres llenguatges com C++ i Java sovint es confonen pel procés de passar arguments a Python. El model de dades centrat en l'objecte i el seu tractament de l'assignació són les causes de la confusió a nivell fonamental.
En l'article, parlarem del concepte de com passar un valor per referència a Python i tractar d'entendre exemples de referència en Python.
diana ankudinova
Taula de contingut
- Passa per valor i passa per referència a Python
- La variable no és l'objecte
- Què és Pass by Reference a Python?
- Què és Pass by Value a Python?
Passa per valor i passa per referència a Python
És possible que vulgueu punxar alguna cosa després de llegir endavant, així que prepareu-vos. El model de pas d'arguments de Python és ni Passa per valor ni Passa per referència, però és una referència de Pass per objecte.
Segons el tipus d'objecte que passeu a la funció, la funció es comporta de manera diferent. Els objectes immutables mostren el valor de pas, mentre que els objectes mutables mostren el pas per referència.
Podeu comprovar la diferència entre el valor de transmissió i la referència a l'exemple següent:
Python 3
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)> |
>
>
Sortida
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']>
Al codi anterior, hem mostrat com Python utilitza el concepte d'objecte crida per referència al seu programa.
Passem un nombre enter a la funció call_by_value(). Els nombres enters són objectes immutables, per tant, Python funciona segons la crida per valor, i els canvis fets a la funció no es reflecteixen fora de la funció.
Després passem la llista a la funció per referència. A la funció call_by_reference() passem una llista que és un objecte mutable. Python funciona segons la crida per referència en aquesta funció i els canvis fets dins de la funció també es poden veure fora de la funció.
La variable no és l'objecte
Aquí a és una variable que apunta a una llista que conté els elements X i Y. Però a en si no és una llista. Considereu que a és una galleda que conté l'objecte X i Y.
a = ['X', 'Y']>

Què és Pass by Reference a Python?
Passar per referència significa que heu de passar la funció (referència) a una variable, el que significa que la variable ja existeix a la memòria.
Aquí, la variable (el cub) es passa directament a la funció. La variable actua com un paquet que ve amb el seu contingut (els objectes).

A la imatge de codi anterior, tant list com my_list són la mateixa variable de contenidor i, per tant, fan referència al mateix objecte a la memòria. Qualsevol operació realitzada per la funció sobre la variable o l'objecte serà directament reflectida per la persona que truca. Per exemple, la funció podria canviar completament el contingut de la variable i apuntar-la a un objecte completament diferent:

A més, la funció pot reasignar el contingut de la variable amb el mateix efecte que a continuació:

Per resumir, en el pas per referència, la funció i la persona que truca utilitzen la mateixa variable i objecte.
Passa per referència a l'exemple de Python
En aquest exemple, la funció modificar_lista pren una llista per referència. La funció afegeix la cadena Geeks a la llista passada dins de la funció i l'imprimeix. Com que les llistes són tipus de dades mutables, els canvis fets a la llista dins de la funció també es reflecteixen fora de la funció, com podeu veure a la sortida.
Python 3
def> modify_list(x):> >x.append(>'Geeks'>)> >print>(>'Inside function:'>, x)> > my_list>=> [>'Geeks'>,>'for'>]> modify_list(my_list)> print>(>'Outside function:'>, my_list)> |
>
dormir javascript
>
Sortida
Inside function: ['Geeks', 'for', 'Geeks'] Outside function: ['Geeks', 'for', 'Geeks']>
Què és Pass by Value a Python?
En aquest enfocament, passem una còpia de el variables reals de la funció com a paràmetre. Per tant, qualsevol modificació dels paràmetres dins de la funció no es reflectirà a la variable real.

El mateix passa amb qualsevol operació realitzada per la funció sobre la variable o l'objecte

En resum, les còpies de les variables i dels objectes en el context de la persona que truca de la funció estan completament aïllades.
Passa per valor a l'exemple de Python
Aquí, passarem l'enter x a la funció que és un tipus de dades immutable. A continuació, actualitzem el valor de l'enter dins de la funció i imprimim el valor actualitzat. Els canvis no es veuen fora de la funció, ja que els enters són tipus de dades immutables.
Python 3
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)> |
plsql
>
>
Sortida:
Before function call: 5 Inside function: 15 After function call: 5>
La programació de Python utilitza el concepte d'objecte de referència mentre passa valors a les funcions. Aquest article intenta mostrar-vos el concepte de passar per valor i passar per referència a Python. Hem mostrat diferents casos de transmissió de valors amb exemples. Passar valors a una funció a Python és diferent d'altres llenguatges de codificació, però amb aquest tutorial, podeu entendre fàcilment el concepte i implementar-lo al vostre treball.
Llegeix també:
És una trucada de Python per referència o una trucada per valor