Il giorno mar, 14/05/2013 alle 14.49 +0200, Marco Giusti ha scritto: > 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?
Va bene così infatti... finché non sposti anche il a = "non ti sto mica salutando" _dentro_ la funzione (all'inizio)... ciao Pietro _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python