PDA

View Full Version : [PYTHON] Passaggio dei parametri


cdimauro
15-08-2008, 06:30
In un thread è stato riportato questo (http://mail.python.org/pipermail/python-list/2003-November/234135.html) in merito al passaggio dei parametri con Python, lasciando intendere che ci sia un'alone di confusione, e di poca chiarezza anche nelle risposte fornite.

Facciamo chiarezza. Intanto notiamo la prima risposta (http://mail.python.org/pipermail/python-list/2003-November/234139.html) è già di per se molto chiara.

Il buon Alex Martelli (guru di Google) spiega che il passaggio dei parametri avviene sempre e soltanto per riferimento dell'oggetto (passato). Già questo dovrebbe essere sufficiente per capire il modello adottato da Python.

Successivamente aggiunge dei dettagli per fugare ogni dubbio.

Come per qualunque linguaggio di programmazione orientato agli oggetti, possiamo avere degli oggetti che possono cambiare il loro stato oppure no.

Questo è banale: un oggetto modifica il proprio stato in risposta a particolari metodi che mette e a disposizione. Se non esiste nessun metodo che consente di cambiare il suo stato, è chiaro che... sarà un oggetto non modificabile.

Da qui è evidente che esistono due "tipi" di oggetti in Python (e non): quelli mutabili e quelli immutabili.

Passando i primi come parametri, è ovvio che diamo la possibilità a chi li riceve di poter cambiare il loro stato: è sufficiente che la funzione invochi qualche metodo che lo faccia (oppure che venga fatto accesso in scrittura a qualche proprietà).
Quindi se NON vogliamo che ciò accada, basterà passare sempre... una loro COPIA. Sic et simpliciter.

Coi secondi non esiste la possibilità di cambiamento, per cui non si pone il problema: si possono passare in tutta tranquillità e sicurezza.

E' tutto. Penso sia abbastanza chiaro. Se qualcuno avesse ancora dei dubbi sono a disposizione per chiarirli. :)

k0nt3
15-08-2008, 09:48
immagino che ti riferisci a me :D
mi scuso con Alex Martelli perchè la sua risposta è senza dubbio chiara, ma io mi riferivo a questa risposta http://mail.python.org/pipermail/python-list/2003-November/234174.html

cdimauro
15-08-2008, 10:41
Non era mia intenzione continuare la polemica, altrimenti ti avrei citato. ;)

Nello specifico il mio obiettivo era di diradare eventuali dubbi fossero affiorati sull'argomento, visto che il modello scelto da Python è estremamente semplice e chiaro.

Ho visto il link di cui parlavi, ma non posso pretendere che tutti gli utilizzatori di Python abbiano la medesima chiarezza espositiva di un Guido, Alex, Reimond, ecc. :read:

Fanno fede le specifiche del linguaggio per giudicarne le funzionalità e spero siano state chiarite oltre ogni dubbio. ;)

nico159
16-08-2008, 20:44
Studiando da Imparare Python, uno degli aspetti più positivi è come l'autore divide subito gli oggetti in mutabili e non, spiega come Python gestisce la tipizzazione dinamica, e come evitare problemi quando si ha a che fare con oggetti mutabili e referenze condivise

cdimauro
16-08-2008, 23:36
Hai qualche link al libro (immagino sia disponibile gratuitamente online)?

nico159
18-08-2008, 10:25
Non lo è, su Google Libri trovi un arteprima del libro
http://books.google.it/books?id=nEJ-jcYF2fMC&printsec=frontcover&rview=1
EDIT: aggiornato il link all'ultima versione

cdimauro
18-08-2008, 11:03
Ah, ma questo lo conosco. E' un libro fatto veramente molto bene. :)