PDA

View Full Version : Python: chiarimento riguardo le variabili nelle funzioni


~FullSyst3m~
23-01-2008, 17:57
Ho sentito parlare molto di Python e ho deciso di provare con mano. Sto leggendo questa (http://www.python.it/doc/Easytut/easytut-it/node9.html#SECTION009200000000000000000) guida (questo che ho linkato è il capitolo dove sono arrivato) e c'è una cosa poco chiara. Questo per l'esattezza:

All'interno della funzione a_var è 15 finché la funzione viene chiamata con a_func(b_var). Visto che fino a quel punto b_var corrisponde a 15, la chiamata alla funzione è a_func(15), che di conseguenza assegna 15 ad a_var all'interno di a_func.

Perchè a_var è 15?

cdimauro
23-01-2008, 18:10
Sei in un capitolo abbastanza avanzato, che tratta il passaggio dei parametri e lo "scope".

Il concetto è che esistono due variabili a_var: una globale (definita all'esterno della funziona a_func) che vale 10 (e il cui valore NON verrà modificato; infatti, se ci fai caso, l'istruzione print "a_var = ",a_var che è subito dopo alla chiamata a funzione c_var = a_func(b_var) restituisce il valore 10 e non 15), e una definita all'interno di a_func che viene usata per memorizzare il valore passato come argomento ad a_func.

Sono, quindi, due variabili completamente diverse.

Dentro a_funct la SUA a_var ha valore 15 (ed è quello che viene visualizzato) proprio perché viene passato il valore 15 ad a_func come argomento (cioé quando viene eseguita l'istruzione c_var = a_func(b_var); qui b_var vale 15, e questo valore viene preso e memorizzato dentro la a_var che è contenuta in a_func).

Spero di essere stato chiaro.

Comunque ti consiglio questo http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm libro per imparare a programmare in Python, che è fatto molto bene. :)

~FullSyst3m~
23-01-2008, 19:17
Credo di aver capito, non era spiegato molto bene nella guida. Ancora non ho guardato il link che mi hai dato, ma credo che in ogni caso mi convenga prima finire di studiare questo manuale e poi dare un'occhiata al link che mi hai dato tu

EDIT: provando a togliere c_var = a_func (b_var), mi stampa a video che il valore di c_var è 125, ma come è possibile? Togliendo questa riga di codice non dovrebbe esistere nessuna variabile c_var

cdimauro
24-01-2008, 07:54
Infatti dovrebbe darti errore. A me lo dà, ricopiando esattamente quel testo e togliendo quella riga:
>>> print "c_var = ",c_var
c_var =
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'c_var' is not defined
Sicuro di non aver "giocato" prima con l'interprete e aver definito il valore di quella variabile? ;)

cionci
24-01-2008, 08:31
Thread chiuso
|
V