Il giorno 13 novembre 2010 12:19, Marco Giusti <marco.giu...@gmail.com> ha scritto:
> On Sat, Nov 13, 2010 at 11:45:37AM +0100, lex mlist wrote: > > Giorno, > > > > torno alla carica con un'altro problema (e chiedo scusa se vi stresso). > > no problem > =)) grazie mille per la risposta. > [...] > global configuration # <<< here the trick > [...] > ``configuration`` fa parte dello scope globale, quando dentro la > funzione setup tu fai l'assegnamento > > configuration = yaml.load(open(self.filename)) > > tu leghi (bind) il nome configuration allo scope locale. quando da > dentro la funzione cerchi il nome ``configuration``, lui lo trova nello > scope locale e ritorna quello, ovvero i parametri di configurazione, ma > dal modulo ``error`` tu ottieni la variabile che è associata allo scope > globale. > Accipicchia che comportamento "strano" :s Non posso che chiedermi il perchè di un tale comportamento, si verifica solo all'interno delle classi o in presenza di qualunque scope non globale? (funzioni ed altro, se esiste) Comunque grazie mille per l'aiuto, avevo davvero provato di tutto, anche ad usare una classe al posto del dict ma il risultato finale è sempre stato lo stesso. > un piccolo extra che puoi ignorare se credi. Nono, anzi tutt'altro, ogni informazione in più è utilissima :)) e ti ringrazio in anticipo > python mette a disposizione > una variabile globale, ``__debug__``, che è sempre vera a meno di > eseguire l'interprete python con le opzioni di ottimizzazione, -O. in > quel caso crea dei file con bytecode ottimizzato .pyo, invece dei > classici .pyc, inoltre è interessante come viene ottimizzato il codice: > > import dis > > def error(msg): > if __debug__: > print msg > > error('exception...') > dis.dis(error) > > prova a lanciare questo codice prima normalmente e poi con l'opzione -O. > Wow! Sinceramente ci speravo in una variabile tipo quella, anche se non ci contavo troppo, a questo punto potrei usufruire della variabile __debug__, visto che ottimizza anche il bytecode finale. Ho provato a ripetere l'esempio con una variabile booleana "debug" e in nessun caso il codice viene ottimizzato. Mi sembra un ottimo compromesso aggiungere una semplice opzione -O per ottenere un insieme di benefici. L'opzione è da ripetere ad ogni esecuzione o basta la prima volta lasciando poi i .pyo? (a me comunque non ha salvato alcun .pyo, magari lo farà quando lo chiamano altri moduli) Grazie ancora!
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python