7. Pasaje por Referencia

Pasaje de Variables a funciones por Referencia

Veamos el siguiente ejemplo:

def agregar(l):#la función recibe la lista l como argumento.
    l.append(int(input("Ingrese un número entero:"))) #l se definió en main script.

#main script o código principal
l=[1,2,3]# esta lista es global
agregar()
print(l)

En el caso de las listas y diccionarios, al pasarlos como argumentos a las funciones, no se crea una copia de los mismos sino que se trabajan como variables globales y cualquier modificación que se les haga dentro de la función, afecta al contenido de la variable. 

Es decir que no se le está pasando los valores a la función, sino una referencia de su dirección en memoria, es por ello que se denomina pasaje por referencia.

Ejemplo con diccionario:

def agregar(d):
    print("el id de d es: ", id(d))
    d[3]="tres"

#main script o código principal
d={1:"uno", 2:"dos"}
print("el id de d es: ", id(d))
agregar(d)
print(d)

La salida de este scritp sería:

el id de d es:  126148792463296
el id de d es:  126148792463296
{1: 'uno', 2: 'dos', 3: 'tres'}

Podemos ver que dentro de la función y fuera de la función el id es el mismo,
por lo que el diccionario ES el mismo, esto es cierto por que se PASA POR REFERENCIA!.