[Python] Indagine su una variabile.

Gabriele Battaglia iz4apu a libero.it
Lun 25 Lug 2022 15:20:18 CEST


Ciao Massimo.

Grazie per il tuo aiuto.

Riprendendo il tuo esempio ti chiedo, a cosa serve allora la parola 
chiave global?

Se io dichiaro una variabile a livello main, poi la modifico all'interno 
di una funzione di livello più alto e naturalmente me la aspetto 
modificata quando esco da queste funzioni, perchè dovrei avere la 
necessità di dichiarare che quella variabile è global, all'interno delle 
mie funzioni?

Non so se sono riuscito a spiegare il mio dubbio.

Gabry.


Reply to Massimo Masson's message, wrote on 05/05/2022 at 18:57:
> Il 05/05/2022 16:16, Gabriele Battaglia ha scritto:
> [...]
>
>> 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.
>
> Secondo me è un tema di namespace e scope delle variabili...
>
> Se dichiari una variabile dentro una funzione, il suo scope è interno 
> alla funzione. La variabile dichiarata esternamente ha uno scope più 
> ampio.
>
> Quindi la "d" interna alla funzione esaurisce la sua visibilità in 
> uscita della stessa.
>
> La "d" esterna alla funzione continua a puntare al dizionario di prima.
> Se non è stato modificato, il dizionario resta invariato.
> Se invece modifichi il dizionario, anche dentro la funzione, lo 
> ritrovi modificato (perché un conto è lo scope della variabile, un 
> conto è l'oggetto puntato).
>
> Esempio stupido:
>
> def fanulla(dizionario):
>     #dizionario[1]="uno"
>     d = "ciao"
>     print ("dentro fanulla d vale ", d)
>
> d = {}
>
> print("prima di fanulla d vale ", d)
> fanulla(d)
> print("dopo fanulla d vale ", d)
>
> Se togli il # dentro la funzione, il dizionario viene modificato.
>
> Oppure non ho capito nulla del tuo problema, in tal caso chiedo venia!
> ciao.
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python

-- 
--... ...--  -.. .  .. --.. ....- .- .--. ..-  - ..-  . .
Sent from TB on Windows 10, Genus Bononiae's computer.



Maggiori informazioni sulla lista Python