[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