2008/11/23 Massimo Capanni <[EMAIL PROTECTED]>: > 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 _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python