Pasar los Datos por Valor Vs Referencia
Con Valores Simples
En Python por defecto los valores simples se pasan por valor (int, float, string…)
ejemplo pasando por valor:
def comer_manzana(manzanas):
manzanas - 1
manzanas = 5
comer_manzana(manzanas)
print(manzanas)
resultado:
5
Si queremos pasar por referencia debemos modificar la variable manzana con el resultado del metodo con return
def comer_manzana(manzanas):
return manzanas - 1
manzanas = 5
manzanas = comer_manzana(manzanas)
print(manzanas)
resultado
4
Por ultimo, otra alternativa es usar la palabra clave global que indica a Python que queremos usar la variable global en la función:
manzanas = 5
def comer_manzana():
global manzanas
manzanas = manzanas - 1
comer_manzana()
print(manzanas)
resultado
4
.
Con Valores Compuestos
En el caso de los valores compuestos por defecto se pasan por referencia
def sumar_fruta(lista_frutas):
lista_frutas.append('fresa')
lista_frutas = ['manzana', 'uva', 'mango']
sumar_fruta(lista_frutas)
print(lista_frutas)
resultado
['manzana', 'uva', 'mango', 'fresa']
Si quieres pasar por valor un tipo compuesto , puedes enviar una copia del mismo.
def sumar_fruta(lista_frutas):
lista_frutas.append('fresa')
print(f'copia de lista frutas: {lista_frutas}')
lista_frutas = ['manzana', 'uva', 'mango']
sumar_fruta(lista_frutas[:]) # Una copia con [:]
print(f'lista de frutas original: {lista_frutas}')
resultado
copia de lista frutas: ['manzana', 'uva', 'mango', 'fresa']
lista de frutas original: ['manzana', 'uva', 'mango']
Espero que esto te sea de ayuda 😃
Curso de Introducción al Pensamiento Computacional con Python
0 Comentarios
para escribir tu comentario