[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