[Python] Dubbio su name space / variabili globali

maria teresa panunzio mariateresa.panunzio a yahoo.it
Gio 20 Ago 2020 10:29:48 CEST


 

    Il giovedì 20 agosto 2020, 10:15:09 CEST, 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?
___________________________________________________________________________________
Mi intrometto per riferire quanto so io a proposito:la variabile viene vista, è vero..Per essere aggiornata, però, deve essere stata definita globale all'interno della funzione con la parola chiave "global".
_______________________________________________
Python mailing list
Python a lists.python.it
https://lists.python.it/mailman/listinfo/python
  
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20200820/b77baf9e/attachment.html>


Maggiori informazioni sulla lista Python