Ho trovato la risposta piuttosto facilmente:
https://www.programiz.com/python-programming/global-local-nonlocal-variables

Quando provo ad assegnare un valore alla variabile, la tratta come locale!
E quindi va in paranoia perché non è stata dichiarata prima.
Diciamo che avrei preferito restituisse errore anche nel primo caso.

Il giorno gio 20 ago 2020 alle ore 10:14 Valerio Pachera <siri...@gmail.com>
ha scritto:

> >>> def f():
> ...     print(n)
> ...
> non ho ancora dichiarato n.
> La dichiaro esternamente alla funzione, quindi (correggetemi se sbaglio) n
> sarà una variabile globale.
>
> >>> n = 10
> >>> f()
> 10
>
> A conferma di quanto scritto sopra, n viene stampata.
>
> Ora faccio la stessa cosa ma faccio incrementare di 1 la variabile alla
> funzione prima di stamparla.
>
> >>> def f():
> ...     n += 1
> ...     print(n)
> ...
> >>> n = 10
> >>> f()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "<stdin>", line 2, in f
> UnboundLocalError: local variable 'n' referenced before assignment
>
> E qua non capisco...perché riesco a stamparla ma non ad incrementarla?
>
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a