[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