[Python] Dubbi su passaggio variabili a funzione

Marco Buttu marcobuttu a nanoelectronic.net
Dom 23 Nov 2008 11:24:05 CET


On Sun, 2008-11-23 at 10:35 +0100, Massimo Capanni wrote:

> salve a tutti,
> 
> 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?

Non mi pare sia cosi'. Tu passi sempre una reference all'oggetto, non
una copia. Se vuoi passare una copia devi farlo esplicitamente.

>>> def chlist(lst):
...     print id(lst)
...     lst.append(100)
...     print lst, id(lst)
...     lst = 50
...     print lst, id(lst)
... 
>>> lst = list()
>>> id(lst)
3084218188L
>>> chlist(lst)
3084218188
[100] 3084218188 # L'oggetto e' sempre lo stesso
50 135720172 # lst e' un altro oggetto


Ciao, Marco



Maggiori informazioni sulla lista Python