Avevo perso la notizia causa alcuni impegni, ma da ormai una settimana è stata rilasciata la versione alpha di Python 2.5.
Le aggiunte stanno portanto Python verso l'attesa versione 3, che porterà notevoli innovazioni a questo linguaggio che si appresta a diventare punto fondamentale per lo sviluppo in ambiente opensource e non solo. Sono state introdotte molte novità sintattiche, oltre ad aggiornamenti e modifiche ai moduli inclusi nella libreria standard.
Espressioni condizionali
Prima d'ora in Python non erano presenti delle espressioni condizionali inline, quelle che in PHP o altri linguaggi vengono specificate utilizzando gli operatori ? e :
$a = ($b == true) ? $b : NULL
Ora, dopo le forti pressioni della comunità , Guido Van Rossum ha deciso di aggiungere questa feature anche in Python anche se ha optato per una sintassi leggeremente differente e più pythonica:
a = ('vero' if b else 'falso')
Come possiamo notare i valore da restituire nel caso l'espressione risulti vera va posizionato all'inizio dell'espressione, e successivamente va aggiunto il controllo di verità e, dopo l'else, il valore da specificare nel caso in cui la condizione non risulti vera.
Import assoluti e relaviti
Questa feature permette agli sviluppatori di utilizzare una sintassi estesa del costrutto import al fine di specificare manualmente da quale posizione si vuole importare un determinato modulo. Prima d'ora l'importazione cercava un determinato modulo all'interno della directory corrente e successivamente nelle altre specificate in sys.path
. In questo modo era necessario utilizzare nomi per i propri moduli differenti da quelli inclusi nella distribuzione standard al fine di assicurarsi che l'importazione di questi moduli potesse avvenire correttamente. Ora questo non è più necessario:
# necessario per retrocompatibilità
from __future__ import absolute_import
# importiamo il modulo string della libreria standard
# anche se esite un modulo string.py allo stesso livello
# di quello corrente
import string
# importiamo il modulo string.py contenuto allo stesso
# livello di quello corrente, ed il modulo sys.py
# contenuto nella directory padre di quella corrente
from . import string as my_string
from .. import sys as my_sys
print my_string is not string
# ...
Utilizzando il punto nella claosula from-import è possibile muoversi dal modulo corrente all'interno del path come se ci si trovasse in una directory (ogni punto corrisponde ad un arretramento nell'albero).
àˆ possibile leggere una lista completa delle variazioni rispetto alla versione precedente a questo indirizzo. Ve ne sono molte altre interessanti ma volevo evitare un post troppo lungo. Per esempio ora è possibile utilizzare finally insieme ad except ed eventualmente else, la keyword yield ora non è più un costrutto e può essere utilizzata all'interno di espressioni, e molto altro.
Non c'è che dire, un ottimo lavoro.