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

Manlio Perillo manlio.perillo a gmail.com
Mar 14 Maggio 2013 17:37:54 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

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

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).

> [...]


Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlGSWlIACgkQscQJ24LbaURB6gCfZNO7dGPr/6Wels7zt9ymn2f9
LHIAn3WudvLowfWKHbmTK1UpxFqzvCzV
=23Yg
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python