[Python] With... as... per sopprimere NameError

Pietro Battiston me a pietrobattiston.it
Mar 14 Maggio 2013 18:09:05 CEST


Il giorno mar, 14/05/2013 alle 17.37 +0200, Manlio Perillo ha scritto:
> Il 14/05/2013 17:24, Pietro Battiston ha scritto:
> > [...]
> > OK, "manutenzione" non era la parola giusta, intendevo più
> > "leggibilità" (che chiaramente influisce sulla manutenzione). E in
> > realtà non finisce qui: è frequentissimo anche scrivere
> > 
> > d["x"][condizione] + d["y"][condizione]
> > 
> > ("condizione" è a sua volta un oggetto pandas, qualcosa come "d.year >
> > 1985"), che può sì diventare
> > 
> > d.x[condizione] + d.y[condizione]
> > 
> > ma è comunque molto peggio di
> > 
> > with d.context( condizione ):
> >     x + y
> > 
> 
> Con Python credo tu possa al massimo ottenere, abbastanza facilmente,
> qualcosa come:
> 
> with obj.context(condizione) as d:
>     d.x + d.y


È già un'ottima idea! Provo subito a scrivere una cosa del genere.


> Non è possibile "iniettare" delle variabili locali.
> 
> Al massimo puoi "iniettare" delle variabili globali o nel dizionario dei
> builtins, pregando che nella funzione non viene definita una variabile
> con lo stesso nome (che avrà **sempre** la precedenza).

In fondo, posso pensare che finché si lavora con un solo dataframe (che,
per la cronaca, è tutto quello che sanno fare gli altri linguaggi che ho
menzionato), si inetta le variabili globali all'inizio, senza neanche
bisogno del "with ...", e se si lavora con più dataframe, lo si fa a
costo di quel "d."...

grazie mille

ciao

Pietro



Maggiori informazioni sulla lista Python