Sobes.tech
Junior

¿Cómo se pasan los argumentos a una función: por referencia o por valor?

sobes.tech AI

Respuesta de la IA

En Python, los argumentos no se pasan exactamente por referencia ni exactamente por valor, sino mediante un mecanismo que a menudo se llama "paso por referencia de objeto" o "paso por compartición".

Esto significa lo siguiente:

  • Al pasar un argumento a una función, se pasa una referencia al objeto.
  • Si el objeto es mutable (por ejemplo, una lista, un diccionario), los cambios dentro de la función serán visibles fuera de ella.
  • Si el objeto es inmutable (por ejemplo, un número, una cadena, una tupla), al intentar modificarlo dentro de la función se creará un nuevo objeto, y el objeto original fuera de la función permanecerá sin cambios.

Objetos mutables:

# Objeto mutable (lista)
def modify_list(items):
    items.append(4)

my_list = [1, 2, 3]
modify_list(my_list)
# my_list ahora es [1, 2, 3, 4]

Objetos inmutables:

# Objeto inmutable (número)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number sigue siendo 5