[Python] Problema con la condivisione e l'utilizzo di un dict globale

Marco Giusti marco.giusti a gmail.com
Sab 13 Nov 2010 14:53:51 CET


On Sat, Nov 13, 2010 at 02:39:33PM +0100, lex mlist wrote:
> Il giorno 13 novembre 2010 14:23, Marco Giusti <marco.giusti a gmail.com> ha
> scritto:
> 
> > l'ottimizzazione del bytecode python è molto superficiale, per quanto ne
> > sò tutto quello che viene fatto è la rimozione di alcuni statement: gli
> > ``assert``, ``__debug__`` viene impostata a ``False`` e vengono
> > eliminati (azzerati?) tutti gli attributi ``__doc__`. il test sulla
> > variabile ``__debug__`` è un piccolo extra ma neanche troppo furbo,
> > tempo fa' non era in grado di eliminare questo statement:
> >
> >        if __debug__ and var:
> >                ...
> >
> > ora non saprei.
> 
> 
> Testato giusto ora, e per l'appunto non lo fà, comunque credo sia giusto
> cosi, perchè se non c'è la __debug__ sà di poter evitare di scrivere il
> blocco condizionale, perchè probabilmente essendo una variabile globale
> riservata all'interprete (non sò se sia possibile definirla o meno, passami
> il termine), con -O viene omessa e boh, ma nella presenza di un operatore
> "and" con una variabile da verificare a runtime non può evitare di includere
> il blocco.
> 
> Boh, non so se mi son spiegato, questa è la mia teoria per quello che ho
> visto da stamattina ad ora :)

non è giusto così perché `__debug__` c'è sempre, in un caso vale `True` e
nell'altro vale `False` e quindi il seguente codice non verrà mai
eseguito se `__debug__` è falsa, indipendentemente dal valore di var:

	if __debug__ and var:
		...

m.

-- 
Cosa volete? Questo diavolo d'uomo ha sempre le tasche ripiene di argomenti
irresistibili.
		-- Pierre Augustin Caron de Beaumarchais


Maggiori informazioni sulla lista Python