Newsgroup: it.comp.macintosh
Titolo: [ot]help python

Lo so che sono ot, ma programmo sul mac... :P so anche che c'e' un ng
apposta, ma non sembra attivissimo e poi mi serve capire una cavolata e mi
pare che qui ci siano esperti.
il punto e' che non capisco come funzionano le funzioni operative. dici
niente... penserete voi, ma in realta' la cosa e' molto banale e ci ho
sbattuto la testa e ho un workaround che funziona.
supponiamo che io abbia nel main una variabile c=0.0
e abbia la funzione
def somma(a,b,c):
     c=a+b
     return c
nel main c non e' cambiata, ha sempre valore 0. per fargli avere la somma
devo fare c=somma(a,b) rimuovendo c dagli argomenti passati a somma.
evabbeh. volendo sta cosa e' intuitiva.
ora supponiamo di avere un vettore di tre numeri, che sono angoli in gradi
angoli[0]=90.0
angoli[1]=90.0
angoli[2]=90.0
e di avere una funzione idiota (nel senso che non ha senso scriverla)
def coseno(listang):
     listang[0]=listang[0]*3.14/180
     listang[1]=listang[1]*3.14/180
     listang[2]=listang[2]*3.14/180
     val=math.cos(listang[0])
     return val
e da main fare
    print coseno(angoli)
ora se faccio print angoli dal main, beh... i valori sono in radianti.
mi spiegate perhce' una variabile intero o float passata a una funzione, e
li' modificata e ritornata, non cambia valore nel main mentre un'operazione
fatta in una funzione su una lista passata come argomento modifica il
contenuto della lista anche nel main? le liste sono passate per indirizzo e
le variabili "normali" no?
aiuto pliz
--
ilnonno
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 apposta, ma non sembra attivissimo
Ti sembra male: solo nell'ultima settimana sono stati inseriti 200 e
passa post.
-- 
Soon there'll be just two kinds of people.
Those who use computers.
And those who use Apples.

 passa post.
P.S.
Nel caso in cui tu ti riferissi a it-alt.comp.programmazione.osx, il
gruppo appropriato per il tuo problema (e a cui mi riferivo io) č
it.comp.lang.python.


 Lo so che sono ot, ma programmo sul mac... :P so anche che c'e' un ng
chiedi nei ng per linux, li troverai una marea di aiuto 

 le variabili "normali" no?
L'assegnamento a un "nome nudo" (come c nel primo esempio) ``modifica''
il nome stesso: non modifica nessun oggetto, ma appiccica il nome stesso
ad un altro oggetto (pensa ai nomi come dei post-it che puoi attaccare e
staccare dai vari oggetti).
L'assegnamento ad una "indicizzazione" (come a un attributo, ecc) non
modifica nessun nome, ma modifica un oggetto -- l'oggetto che viene
indicizzato (o di cui si assegna l'attributo).  Per precisione, questo
tipo di assegnamento chiede all'oggetto "per favore metti come tuo terzo
elemento il valore tal dei tali" (poi tocca all'oggetto decidere come
agire in risposta a questa richiesta).
Gli indirizzi non c'entrano ne` poco ne` punto: semplicemente, in Python
come in Java, quel che viene passato come argomento (o ritornato da
funzione, assegnato a qualcosa, ecc) e` l'oggetto stesso, non una copia
dell'oggetto (se vuoi una copia chiedi esplicitamente una copia).  Java
ha effettivamente la stranezza che dici (fa copie implicite di alcuni
tipi elementari, come i numeri, ma non della stragrande maggioranza
delle cose), Python no, tratta tutti i tipi di oggetto in maniera
esattamente identica (poi alcuni tipi non sono modificabili, cioe` non
offrono nessun metodo ne` speciale ne` normale che gli chieda "caro
signor oggetto per piacere altera il tuo valore in questo modo", ma
questo e` comunque un discorso completamente diverso rispetto a quello
dell'assegnazione ai nomi).
Alex