[Python] Dubbio su name space / variabili globali

Valerio Pachera sirio81 a gmail.com
Gio 20 Ago 2020 15:49:09 CEST


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 <sirio81 a 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?
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20200820/db1834c5/attachment.html>


Maggiori informazioni sulla lista Python