[Python] variabili "globali" tra più moduli.

Daniele Varrazzo piro a develer.com
Sab 18 Maggio 2013 01:33:21 CEST


On 2013-05-17 22:52, Gollum1 wrote:

> per la maggiore dovrebbe trattarsi di valori di variabili che vengono
> impostate in funzione degli argomenti passati dalla riga di comando.

Come ti hanno già fatto capire in tanti, è probabile che non hai 
bisogno di variabili globali.


> pensavo di utilizzare getops per gestire la riga di comando, questa
> funzione si troverà in un modulo separato rispetto al programma
> principale (un modulo con tutte le funzioni di utilità che ho
> intenzione di utilizzare), e restituirà un vocabolario con coppie
> chiave-valore dati o direttamente dal contenuto della riga di comando
> o da elaborazioni e interazioni di dati della stessa.

Guarda optparse o argparse nella libreria python. Entrambi 
restituiscono un oggetto che contiene tutti i parametri come attributi. 
Tipicamente ottieni quello nel main() e poi passi l'oggetto o solo i 
valori che servono a funzioni o oggetti create nel main.

Se non fai così i tuoi oggetti (classi, funzioni, moduli) resteranno 
legati alle variabili globali, quindi non potrai usarli in altri 
programmi e non sarà facile testarli. E se non usi questa organizzazione 
per ogni programma anche semplice che hai in mente di scrivere non sarai 
in grado di metterla in piedi quando ne dovrai scrivere uno più 
complesso (non mi fido di chi dice "ho scritto questo programma male ma 
solo perché è piccolo": ho una certezza matematica chese fosse stato più 
grande avrebbe fatto proporzionalmente cacare; probabilmente avrebbe 
fatto geometricamente o esponenzialmente cacare).

Secondo me questa settimana la locuzione "variabile globale" è stata 
usata fin troppo in questa mailing list. Addirittura con chi ha 
inventato nuovi modi più creativi di creare variabili globali! Mi fa 
capire che The Real Programmer™ è in grado di scrivere Visual Basic 
anche quando usa Haskell. Per favore, la settimana prossima parlate di 
"iniezione di dipendenza" :)


-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python