[Python] Un concetto difficile per me.
Daniele Zambelli
daniele.zambelli a gmail.com
Lun 16 Nov 2020 21:58:54 CET
Il giorno lun 16 nov 2020 alle ore 09:44 Strap Lab <lab a 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,
Maggiori informazioni sulla lista
Python