<div dir="ltr"><div>Ho trovato la risposta piuttosto facilmente:</div><div><a href="https://www.programiz.com/python-programming/global-local-nonlocal-variables">https://www.programiz.com/python-programming/global-local-nonlocal-variables</a></div><div><br></div><div>Quando provo ad assegnare un valore alla variabile, la tratta come locale!</div><div>E quindi va in paranoia perché non è stata dichiarata prima.</div><div>Diciamo che avrei preferito restituisse errore anche nel primo caso.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno gio 20 ago 2020 alle ore 10:14 Valerio Pachera <<a href="mailto:sirio81@gmail.com">sirio81@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">>>> def f():<br>...     print(n)<br><div>... <br></div><div>non ho ancora dichiarato n.</div><div>La dichiaro esternamente alla funzione, quindi (correggetemi se sbaglio) n sarà una variabile globale.</div><div><br></div>>>> n = 10<br>>>> f()<br><div>10</div><div><br></div><div>A conferma di quanto scritto sopra, n viene stampata.</div><div><br></div><div>Ora faccio la stessa cosa ma faccio incrementare di 1 la variabile alla funzione prima di stamparla.<br></div><br>>>> def f():<br>...     n += 1<br>...     print(n)<br>... <br>>>> n = 10<br>>>> f()<br>Traceback (most recent call last):<br>  File "<stdin>", line 1, in <module><br>  File "<stdin>", line 2, in f<br><div>UnboundLocalError: local variable 'n' referenced before assignment</div><div><br></div><div>E qua non capisco...perché riesco a stamparla ma non ad incrementarla?<br></div></div>
</blockquote></div>