[Python] Dubbi su passaggio variabili a funzione
Massimo Capanni
massimo.capanni a gmail.com
Lun 24 Nov 2008 18:24:13 CET
salve,
scusate ma solo adesso ho potuto leggere le risposte.
Confesso che sono un po' confuso e provo ad aggiungere
un alto dettaglio che motivi il mio dubbio (tengo a precisare
che ho chiaro cosa significhi per rifermiento e per valore
visto che ci ho sbattuto la testa con Pascal e C :") )
ma e' la pratica che mi ha confuso le idee.
Ad esempio, per esercizio mi sono creato una sorta di lista linkata:
class nodo:
def __init__(self, parametro = None, next = None):
self.parametri = parametri
self.next = None
# creo due nodi
lista = nodo()
p = nodo("foffo")
# aggiungo l'ultimo nodo in testa
def add(lista, p):
p.next = lista
lista.next = p
p = l
mi aspettavo che 'lista' puntasse a 'p' invece il valore non cambia!
cosi' dopo numerosi tentativi mi sono accorto che il parametro
passato non cambiava (e add non aggiungeva un bel nulla alla lista ...)
Parafrasando Franchi il "bigliettino" dentro
la scatola e' stato riscritto e quindi dovrei puntare al nuovo oggetto
linkato (nuovo indirizzo dell'oggetto), invece mi da none ...
Discorso contrario se aggiungo alla funzione add:
return p
Forse mi sto perdendo in un bicchier d'acqua ...
2008/11/24 Manlio Perillo <manlio_perillo a libero.it>
> Manlio Perillo ha scritto:
> > Enrico Franchi ha scritto:
> >> On Nov 23, 2008, at 11:35 AM, Lawrence Oluyede wrote:
> >>
> >>> 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.
> >> Io direi che viene passato per valore il riferimento. :P
> >>
> >> Sembra il modo per assurdo più semplice per definire il comportamento.
> >>
> >
> > Potrebbe però generare confusione.
> >
>
> Scusa, avevo letto riferimento e capito male quello che avevi scritto!
>
>
> > [...]
>
>
> Ciao Manlio
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20081124/6e3c0f6f/attachment.htm
Maggiori informazioni sulla lista
Python