[Python] Dubbi su passaggio variabili a funzione

Lawrence Oluyede l.oluyede a gmail.com
Dom 23 Nov 2008 11:35:45 CET


2008/11/23 Massimo Capanni <massimo.capanni a gmail.com>:
> c'e' qualcosa che mi sfugge nel passaggio dei parametri alle funzioni.
> Se ho capito bene le variabili alle funzioni sono passate per valore, cioe'
> il corpo della funzione non modifica il valore della variabile passata,
> tuttavia
> per quale motivo se passo come parametro una lista ad esempio, questa
> e' come se fosse passata per riferimento?
>
> ad esempio:
>
> def add(lista, dato):
>         lista.append(dato)
> l = []
> add(l, "a")
> add(l, "k")
> add(l, "j")
> print l
>
> ottengo: ['a', 'k', 'j']

Viene sempre e comunque passato l'oggetto riferito dall'etichetta
(quindi non è definibile né come "call by value", né come "call by
reference"), in questo caso la lista è una variabile mutabile, indi
per cui puoi mutarla all'interno della funzione, come all'esterno.

Esiste un documento che potrebbe aiutarti chiamato "how to think like
a pythonista":
<http://python.net/crew/mwh/hacks/objectthink.html> che ho tradotto
tempo fa (ma non è mai stato revisionato):
<http://www.oluyede.org/dev/pensaredapythonista.html>

-- 
Lawrence, neropercaso.it - oluyede.org
"It is difficult to get a man to understand
something when his salary depends on not
understanding it" - Upton Sinclair


Maggiori informazioni sulla lista Python