[Python] With... as... per sopprimere NameError
Manlio Perillo
manlio.perillo a gmail.com
Mar 14 Maggio 2013 16:49:42 CEST
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 14/05/2013 16:37, Pietro Battiston ha scritto:
> [...]
>>
>> Cosa usano: Common Lisp?
>
> No, cose come R, STATA, Gretl (o meglio Hansl, il suo linguaggio di
> programmazione)... linguaggi che vanno (alcuni più, altri meno) bene per
> l'analisi statistica, e con cui poi impazzisci quando cerchi di fare
> qualsiasi altra cosa (discorso leggermente meno vero per R).
>
> [...]
>
>> Common Lisp con la macro with-slots di CLOS è l'unica soluzione più
>> espressiva che mi viene in mente, per quello che vuoi fare.
>
> Potrei sbagliarmi, ma mi pare che "exec()" in Python 3 faccia
> esattamente tutto ciò...
>
No, è molto diverso.
Con Common Lisp puoi modificare il comportamento del linguaggio a
compile time, così come con Python lo puoi fare a run time.
Nel tuo caso, il problema è che in Python la gestione delle variabili
locali di una funzione viene "decisa" a compile time, e quindi non puoi
fare quello che vuoi.
> [...]
>> Quello che vuoi fare credo non sia possibile in Python, e francamente
>> non vedo in che modo aumenti l'espressività..
>>
>
> Ignoro se ci sia una definizione univoca di espressività, quindi non
> sono certo di quale sia la tua risposta al tuo dubbio. Di certo
> ridurrerebbe enormemente la quantità di codice che è necessario scrivere
> per fare una qualsiasi analisi econometrica (se guardo quella che sto
> facendo ora, credo che sarebbe di un fattore 2, per non parlare della
> maggiore semplicità di manutenzione).
>
Sicuramente la differenza tra:
d.x + d.y
e
x + y
è che la seconda è più corta, però:
1) Non ci sono differenze nello sforzo da fare nella manutenzione
2) La prima è piu esplicita, perchè vedi subito a quale "namespace" x
ed y appartengono
Nota che non ci sono problemi a fare in modo da avere
d.x + d.y
invece di
d["x"] + d["y"]
se d è un dizionario.
Ciao Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAlGSTwYACgkQscQJ24LbaUStAQCgjuycYsGUMJg7KbWJrkRXmucB
J3EAmwVKXvctbywPh25Yw53draiPCUEG
=Nu15
-----END PGP SIGNATURE-----
Maggiori informazioni sulla lista
Python