Python: ¿Cuándo se pasa una variable por referencia y cuándo por valor? [duplicar

Posible duplicado:
Python: ¿Cómo paso una variable por referencia?

Mi código

locs = [ [1], [2] ]
for loc in locs:
    loc = []

print locs
# prints => [ [1], [2] ]

Por que esloc no referencia de elementos delocs ?

Python: Todo se pasa como referencia a menos que se copie explícitamente [¿No es esto cierto? ]

Por favor explique ... ¿cómo decide Python referencia y copia ?

Actualización:

Cómo hacer

def compute(ob):
   if isinstance(ob,list): return process_list(ob)
   if isinstance(ob,dict): return process_dict(ob)

for loc in locs:
   loc = compute(loc)  # What to change here to make loc a reference of actual locs iteration ?
@locs debe contener la respuesta final procesada! No quiero usarenumerate, ¿es posible sin él?

Respuestas a la pregunta(12)

Su respuesta a la pregunta