[Python] Un concetto difficile per me.
Gabriele Battaglia
iz4apu a libero.it
Ven 15 Gen 2021 16:14:31 CET
Reply to the Daniele Zambelli's message, wrote on 16/11/2020 at 21:58:
> 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.
>
Grazie anche a te Daniele, buona giornata!
Gabriele.
Maggiori informazioni sulla lista
Python