<div class="gmail_quote">Il giorno 13 novembre 2010 12:19, Marco Giusti <span dir="ltr"><<a href="mailto:marco.giusti@gmail.com">marco.giusti@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Sat, Nov 13, 2010 at 11:45:37AM +0100, lex mlist wrote:<br>
> Giorno,<br>
><br>
> torno alla carica con un'altro problema (e chiedo scusa se vi stresso).<br>
<br>
</div>no problem<br></blockquote><div><br>=)) grazie mille per la risposta.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">
[...]<br>
</div>
global configuration # <<< here the trick<br>
[...]<br>
``configuration`` fa parte dello scope globale, quando dentro la<br>
funzione setup tu fai l'assegnamento<br>
<br>
configuration = yaml.load(open(self.filename))<br>
<br>
tu leghi (bind) il nome configuration allo scope locale. quando da<br>
dentro la funzione cerchi il nome ``configuration``, lui lo trova nello<br>
scope locale e ritorna quello, ovvero i parametri di configurazione, ma<br>
dal modulo ``error`` tu ottieni la variabile che è associata allo scope<br>
globale.<br></blockquote><div><br>Accipicchia che comportamento "strano" :s<br>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)<br>
<br>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.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
un piccolo extra che puoi ignorare se credi.</blockquote><div>Nono, anzi tutt'altro, ogni informazione in più è utilissima :)) e ti ringrazio in anticipo<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
python mette a disposizione<br>
una variabile globale, ``__debug__``, che è sempre vera a meno di<br>
eseguire l'interprete python con le opzioni di ottimizzazione, -O. in<br>
quel caso crea dei file con bytecode ottimizzato .pyo, invece dei<br>
classici .pyc, inoltre è interessante come viene ottimizzato il codice:<br>
<br>
import dis<br>
<br>
def error(msg):<br>
if __debug__:<br>
print msg<br>
<br>
error('exception...')<br>
dis.dis(error)<br>
<br>
prova a lanciare questo codice prima normalmente e poi con l'opzione -O.<br></blockquote><div><br>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.<br>
Mi sembra un ottimo compromesso aggiungere una semplice opzione -O per ottenere un insieme di benefici.<br>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)<br>
<br>Grazie ancora!<br></div></div>