8.13. Listas como parámetros

Cuando se pasa una lista como argumento, en realidad se pasa una referencia a ella, no una copia de la lista. Por ejemplo, la función cabeza toma una lista como parámetro y devuelve el primer elemento.

   1: def cabeza(lista):
   2:     return lista[0]

Así es como se usa.



   1: >>> numeros = [1,2,3]
   2: >>> cabeza(numeros)
   3: 1

El parámetro lista y la variable números son alias de un mismo objeto. El diagrama de estado es así:


Sin título


Como el objeto lista esta compartido por dos marcos, lo dibujamos entre ambos.


Si la función modifica una lista pasada como parámetro, el que hizo la llamada vera el cambio. borra cabeza elimina el primer elemento de una lista.




   1: def borra_cabeza(lista):
   2:     del lista[0]

Aquí vemos el uso de borra cabeza:

Si una función devuelve una lista, de




   1: >>> numeros = [1,2,3]
   2: >>> borra_cabeza(numeros)
   3: >>> print numeros
   4: [2, 3]

vuelve una referencia a la lista. Por ejemplo, cola devuelve una lista que contiene todos los elementos de una lista dada, excepto el primero.




   1: def cola(lista):
   2: return lista[1:]

Aquí vemos como se usa cola:



   1: >>> numeros = [1,2,3]
   2: >>> resto = cola(numeros)
   3: >>> print resto
   4: >>> [2, 3]

Como el valor de retorno se creo con una porción, es una lista. La creación de rest, así como cualquier cambio posterior en rest, no afectara a numbers.

0