On Mon, Apr 15, 2013 at 05:50:33PM +0200, Adriano Barbieri wrote: >> Ma di quale linguaggio stai parlando? Non di Python e non di >> UnboundLocalError. > > Come? > E' perché ho detto definizione al posto di funzione... e un po' di > elasticità sù daii :) > Dopotutto def non è sinonimo di definizione di funzione? > Scusa ma provvengo ancora dalla programmazione di Amiga con AMOS > Pro... da molto molto tempo, il Python è pochi mesi che lo mastico e > mi sono iscritto a questa lista col desiderio di apprendere qualche > nozione di programmazione in Python, ma fin'oranessuno si è degnato > a rispondere a un paio di miei quesiti. > Senza polemizzare, in questa lista mi pare qualcuno abbia una > esperienza decennale con questo linguaggio, ma forse si sente troppo > superiore a sto principiante da neanche deniarlo di una risposta.
no, perché quello che hai detto è sbagliato. python è un linguaggio fortemente e dinamicante tipato. lasciando stare i sofismi, questo vuol dire che se hai una variabile che è un intero che si chiama `my_i` non vuol dire che `my_i` è correllata in maniera stretta con variabili di tipo intero. infatti in python hai oggetti e riferimenti agli oggetti. `my_i` è un nome del riferimento ma tu puoi fare il binding del nome `my_i` ad un oggetto di tipo completamente differente. es: >>> my_i = 42 >>> i = my_i >>> i is my_i True >>> my_i = "quarantadue" >>> i is my_i False >>> alla linea 3 si la seguente situazione: nomi | oggetti | my_i -----> 42 | ^ i ----------| | alla linea 5 la situazione cambia: nomi | oggetti | my_i -----> 42 | i --------> "quarantadue" | chi ha il libro di martelli questo è ottimamente spiegato.. da qualche parte, ora non l'ho sotto mano. > UnboudLocalError: Local variable 'x1' referenced before assignment. > > Dalla mia poca esperienza mi dice che è stata usata una variabile > prima di essere definita e quello che ho suggerito mi è sembrato > chiaro e terra terra... non proprio: Python 2.7.3rc2 (default, Apr 22 2012, 22:30:17) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined >>> come vedi l'errore è ben differente. Leggi il link che è stato postato che è molto istruttivo. ciao m. _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python