Il giorno lun 16 nov 2020 alle ore 09:44 Strap Lab <l...@strap.it> ha scritto: > [...] > > >>> a = 10 > >>> def do(): > ... a = a + 1 > ... print(a) > ... > >>> print(a) > 10 > >>> do() > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "<stdin>", line 2, in do > UnboundLocalError: local variable 'a' referenced before assignment
Per aggiungere un esempio che forse può aiutarti a chiarire le idee, o a confonderle del tutto: >>> a = 10 >>> def do_b(): b = a + 1 print(b) >>> def do_a(): a = a + 1 print(a) >>> a 10 >>> do_b() 11 >>> do_a() Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> do_a() File "<pyshell#10>", line 2, in do_a a = a + 1 UnboundLocalError: local variable 'a' referenced before assignment >>> In questo ultimo caso, la variabile a poiché si trova a sinistra dell'uguale, è una variabile locale alla funzione e "nasconde" la variabile a globale. Ma quando Python tenta di eseguire a + 1, a (quella locale) non è ancora istanziata e Python non sa cosa fare. Ciao -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, _______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python