Quali sono le differenze tra Python 2.x e 3.x?

Enzo
chiede

Mi sto avvicinando da poco a Python, e vedo che l’ultima versione stabile disponibile è la 3.7. Però ho anche l’impressione che molte persone usino Python 2.x, e non capisco se vale la pena imparare qualcosa in più in merito a questa versione precedente. Ci sono grosse differenze?

Vito Gentile
risponde

Effettivamente è vero che Python 2.x è ancora molto utilizzato, nonostante la versione 3.x sia già stata rilasciata diversi anni fa. Il motivo principale della diffusione di Python 2.x è dovuto all’uso di questo linguaggio in progetto più datati, ed al fatto che alcune librerie non sono più supportate per la nuova versione 3.x. Tuttavia, chi comincia a programmare con Python oggi dovrebbe certamente focalizzarsi sulla versione 3.x del linguaggio, che è stata ottimizzata dagli sviluppatori ed ha una prospettiva molto più di lungo termine rispetto al predecessore.

È anche vero che tra Python 2.x e 3.x ci sono delle differenze sintattiche che non facilitano le eventuali operazioni di porting del software. Tra queste differenze, vanno segnalate la nuova sintassi di print (che su Python 2.x era uno statement, mentre adesso è una funzione) e di input (con l’eliminazione di raw_input), la revisione dei tipi int e str, la rimozione dell’operatore <> e altre novità che sono riassunte nella lezione introduttiva della guida a Python di HTML.it.

La conseguenza di queste differenze sintattiche è che bisognerebbe sempre tenerle a mente quando si passa da Python 2.x a Python 3.x. Esiste, tuttavia, la possibilità di utilizzare i future statement su Python 2.x, che permettono di utilizzare la sintassi di Python 3.x anche sul 2.x. Per esempio, il seguente codice mostra come utilizzare la sintassi di Python 3.x su Python 2.x, utilizzando un future statement:


from __future__ import print_function
print("Ciao!")

Anche dell’uso dei future statement su è parlato su HTML.it, in un’apposita lezione della guida a Python.