[Python] Indagine su una variabile.

Yuri yurj a alfa.it
Ven 6 Maggio 2022 09:34:58 CEST


Ciao,

  se non si modifica la variabile all'interno della funzione, si può 
usare la variabile esterna:

 >>> d = 0
 >>> def test():
...   print(d)
...
 >>> test()
0

Se invece si tenta di modificarla:

 >>> def test():
...  print(d)
...  d = 1
...
 >>> d = 0
 >>> test()
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "<stdin>", line 2, in test
UnboundLocalError: local variable 'd' referenced before assignment

Ci pare di capire che Gabriele vuole modificarla ma non ottiene 
l'errore, e quindi potrebbe essere questa la situazione:

 >>> d = {}
 >>> def test():
...  d[0] = 1
...
 >>> test()
 >>> d
{0: 1}

qui non viene dato errore perché d non viene modificata ma solo usata 
come puntatore al contenuto del dizionario.

Magari con queste informazioni Gabriele ha un quadro più chiaro.

Gabriele: puoi mostrarci il codice o almeno la parte essenziale?

Il 06/05/22 08:44, Luigi Russo ha scritto:
>
> Il 05/05/2022 16:16, Gabriele Battaglia ha scritto:
>> Chiedo venia, so che non si dice così ma non mi viene un termine 
>> migliore, forse inspecting... :)
>>
>>
>> Comunque.
>>
>> Ho una variabile dichiarata ad inizio script, del tipo: d={}
>>
>>
>> poi una routine la modifica, ovviamente ha lo stesso nome all'interno 
>> della funzione che non riceve () e non restituisce nulla con return.
>>
>> All'uscita da questa funzione tuttavia, mi ritrovo d intatta, come se 
>> non avessi apportato alcuna modifica.
>>
>>
>> Come si indaga su un problema di questo genere? Io non riesco a 
>> trovare l'inghippo.
>>
>> Gigi:
>
> Ciao Gabriel,
>
> se intendi modificare la variabile globale d dovrai inserire nella 
> funzione la parola chiave global, esempio:
>
>
> d = {}
>
>
> def modificad():
>
>     global d
>
> d = {'Cane': 'Bau'}
>
>
> print(d)
>
>
> Ciao da Gigi
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python


Maggiori informazioni sulla lista Python