Dovrei imparare Python 2 o 3?

Una delle maggiori fonti di confusione e disinformazione per chi vuole imparare Python è quale versione dovrebbe imparare.

Dovrei imparare Python 2.x o Python 3.x?

In effetti, questa è una delle domande che ci vengono poste più spesso a Dataquest, dove insegniamo Python come parte del nostro curriculum di Data Science.

Questo post dà un po’ di contesto dietro la domanda, spiega la prospettiva, e vi dice quale versione dovreste imparare.

Iniziamo dando un breve sguardo alla storia.

Python 3.0 è stato rilasciato nel 2008 (non un errore di battitura – 9 anni fa!)

Il 3 dicembre 2008, Python ha rilasciato la versione 3.0 . La particolarità era che si trattava di un rilascio incompatibile all’indietro (se volete leggere di più sul perché, vi consiglio questo eccellente post di Brett Cannon)

Come risultato, per chiunque stesse usando Python 2.x in quel momento, migrare il proprio progetto alla 3.x richiedeva grandi cambiamenti. Questo non includeva solo progetti e applicazioni individuali, ma anche tutte le librerie che fanno parte dell’ecosistema Python.

Il cambiamento fu visto come estremamente controverso, e molti progetti resistettero al dolore del passaggio, specialmente nella comunità Scientific Python. Ci sono voluti due anni perché la principale libreria numerica NumPy rilasciasse la sua prima versione 3.x, dopo di che altri progetti hanno iniziato a rilasciare versioni compatibili con la 3.x negli anni successivi.

Nel 2012, molte librerie avevano il supporto per la 3.x, ma la maggior parte era ancora scritta in 2.x. Con il tempo, sono stati rilasciati strumenti che hanno reso il porting del codice più facile, ma c’era ancora una grande resistenza a passare.

Un’ottima lettura sull’argomento è il post di Jake VanderPlas del 2013: Will Scientists Ever Move to Python 3?

Nei pochi anni che seguirono, furono rilasciati diversi strumenti per aiutare la transizione delle vecchie codebase da Python 2 a Python 3.

Originariamente, Python aveva programmato la data di ‘fine vita’ di Python 2.x per il 2015, ma nel 2014 hanno annunciato che l’avrebbero estesa di 5 anni fino al 2020, in parte per alleviare le preoccupazioni di quegli utenti che non possono ancora migrare a Python 3.

Avanti ad oggi

Oggi, ci sono pochissime librerie che non supportano Python 3. Python 3 Readiness mostra che 344 dei 360 pacchetti principali per Python supportano la 3.x.

Inoltre, molti pacchetti stanno annunciando la fine del supporto per la 2.x. Python 3 Statement è un progetto in cui molte delle principali librerie (scientifiche) si stanno impegnando a smettere di supportare la 2.x nel 2020 o prima.

Recentemente, il popolare web-framework Django ha annunciato che la sua nuova versione 2..0 non supporterà Python 2.x.

Perché questa è ancora una domanda?

Ci sono un sacco di vecchie risorse gratuite online per imparare Python che sono basate su Python 2, inclusi la maggior parte dei corsi MOOC in posti come Coursera, Udemy e edX.

In aggiunta a questo, il popolarissimo ‘Learn Python the Hard Way’ di Zed Shaw era scritto in Python 2.x e non è stato aggiornato. Fino a poco tempo fa, pensavo che questo fosse solo perché Zed era troppo pigro per aggiornare il suo corso, ma recentemente ha pubblicato un articolo controverso: The Case against Python 3.

Potreste anche leggere l’eccellente confutazione di Eevee: A Rebuttal For Python 3, così come i pensieri di molti sviluppatori di software nel thread di Hacker News per l’articolo di Zed).

In breve – il numero di persone che sono d’accordo con la sfuriata di Zed sono in estrema minoranza.

Quindi quale dovrei imparare?

Perché dovresti imparare Python 3

Da una prospettiva, ho avuto la fortuna di entrare nel mondo di Python molto più recentemente, all’inizio del 2016. Ho iniziato a imparare Python come parte del curriculum di scienza dei dati a Dataquest. Dataquest insegna solo la 3.x, e per un bel po’ di tempo non sapevo di tutta questa controversia 2 vs 3.

Ho usato Python 3.x esclusivamente e raramente mi sono imbattuto in problemi di compatibilità.

Molto occasionalmente (forse una volta ogni 3-4 mesi), scoprirò che sto cercando di eseguire qualcosa che richiede il supporto di Python 2, e il virtualenv di Python mi permette di creare istantaneamente un ambiente 2.x sulla mia macchina per eseguire quel pezzo di software legacy.

Python 3.x è il futuro, e con il supporto di Python 2.x in calo, dovreste dedicare il vostro tempo ad imparare la versione che vi aiuterà nel futuro.

Perché dovreste imparare Python 2

Non dovreste. Molto presto non ci saranno future correzioni di sicurezza o di bug per Python 2.x, e il vostro tempo è meglio speso per imparare la 3.x.

Nel caso improbabile che finiate a lavorare con una base di codice legacy Python 2, strumenti come python-future vi renderanno facile l’uso avendo imparato solo Python 3.

Spero che questo ti abbia aiutato a capire questo argomento controverso e a prendere la tua decisione di imparare Python 3.

Dataquest è la migliore piattaforma online per imparare ad essere un Data Scientist usando Python (3.x, ovviamente!).

Abbiamo laureati che lavorano presso SpaceX, Amazon e altri. Se questo ti interessa, puoi iscriverti e completare il nostro primo corso gratuitamente su Dataquest.io

Questo post è basato su questa risposta di Quora

Data Scientist di Dataquest.io. Ama i dati e l’Aussie Rules Football. Australiano che vive in Texas.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *