On Tue, May 14, 2013 at 02:27:19PM +0200, Pietro Battiston wrote:
> Il giorno mar, 14/05/2013 alle 13.52 +0200, Marco Giusti ha scritto:
> > On Tue, May 14, 2013 at 01:32:40PM +0200, Pietro Battiston wrote:
> > > Avevo anche pensato che __enter__ potrebbe installare un sys.excepthook
> > > modificato che cattura le NameErrorException (e __exit__ ripristinare
> > > quello originale)... ma un conto è catturarle, un altro fornirle al
> > > codice l'oggetto relativo e farlo proseguire normalmente...
> > 
> > premetto che non mi è chiarissimo perché tu voglia installare
> > sys.excepthook, ma un context manager può gestire solo il codice
> > all'interno del contesto stesso:
> > 
> >     with context(..):
> >             do_stuff()  # <- questo e' gestito
> >     do_stuff_again()  # <- questo no, se NameError e' generata, __exit__
> >                       # non può fare niente
> > 
> 
> Ma è esattamente quello che voglio! L'esempio che ho scritto io se
> eseguito _fa_ esattamente quello che voglio... il problema è che non
> funziona se utilizzato invece in una funzione.
> 
> N.B: sì, NameError, non NameErrorException, sorry.

scusa ma ancora non capisco bene, ho semplicemente aggiunto le seguenti
righe alla fine del tuo codice:

        def foo():
                print a
                with TuDimmiCosaVuoiCheCiPensoIo( {"a" : "ciao"} ):
                        print a

                print a

        foo()

e lanciandolo:

        non ti sto mica salutando
        ciao
        non ti sto mica salutando
        non ti sto mica salutando
        ciao
        non ti sto mica salutando

cosa dovrebbe stampare invece?

ciao
m.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a