Corso

Se stai pensando di entrare nel mondo della data science, probabilmente avrai sentito parlare di Python. Python è un linguaggio di programmazione open source e general-purpose, con un’ampia applicabilità nella data science e in altri ambiti software, come lo sviluppo web e di videogiochi, la cybersecurity e la blockchain.
La popolarità di Python è esplosa negli ultimi anni. È al primo posto in vari indici di popolarità dei linguaggi di programmazione, tra cui l’indice TIOBE e l’indice PYPL. Puoi scoprire di più su a cosa serve Python in un articolo dedicato.
Grazie alla sua sintassi semplice e leggibile, Python è spesso citato come uno dei linguaggi di programmazione più facili da imparare per chi inizia a scrivere codice. Se sei nuovo alla data science e non sai quale linguaggio imparare per primo, Python è una delle opzioni migliori. Puoi iniziare subito il tuo percorso nella data science seguendo il career track Data Scientist with Python su DataCamp.
Eppure, le cose possono confondere un po’. Forse hai sentito parlare anche di Python 2 e 3. Che significa? Non esiste un unico linguaggio di programmazione Python? Quale dovresti imparare? Niente panico: salvo casi particolari, ormai si usa sempre Python 3. In ogni caso, è sempre utile conoscere le differenze.
Nelle sezioni che seguono spiegheremo cosa sono Python 2 e 3, le principali differenze tra loro e quale sia il più consigliato da imparare e utilizzare.
Cos’è Python 2
Python è stato sviluppato alla fine degli anni ’80 da Guido van Rossum ed è stato reso pubblico per la prima volta nel 1991. Dopo nove anni di sviluppo e crescente popolarità, nel 2000 è stato rilasciato Python 2.0.
Python 2 è arrivato con una nuova specifica tecnica chiamata Python Enhancement Proposal (PEP), che mirava a fornire linee guida e best practice per scrivere codice Python. Ha introdotto anche nuove funzionalità, come le list comprehension, il supporto Unicode e un garbage collector con rilevamento dei cicli.
Ma il cambiamento più importante in Python 2 ha riguardato il processo di sviluppo stesso. Python è stato concepito come un linguaggio di programmazione facile da imparare per i principianti. Per raggiungere questo obiettivo, il team responsabile dello sviluppo di Python – con Guido van Rossum alla guida – decise di passare a un processo di sviluppo più trasparente e supportato dalla comunità.
Python 2 ha continuato a evolversi nel tempo. Le versioni successive hanno aggiunto nuove funzionalità al linguaggio. L’ultima versione di Python 2, rilasciata nel 2010, è stata Python 2.7. Il supporto per questa versione è terminato il 1° gennaio 2020.
Cos’è Python 3
Python 3 è la generazione successiva del linguaggio. È stato rilasciato nel dicembre 2008, insieme a diversi miglioramenti e nuove funzionalità.
Python 3 non è semplicemente una versione di Python 2 corretta da bug. La nuova versione ha cambiato radicalmente il linguaggio per affrontare problemi di sicurezza e difetti di progettazione presenti nelle versioni precedenti. Python 3 è arrivato con una nuova sintassi pensata per evitare codice ridondante o ripetitivo, cioè codice che svolge lo stesso compito in modi diversi. Fornendo un unico modo chiaro di fare le cose, la facilità d’uso e la leggibilità di Python 3 sono migliorate notevolmente.
Tra i principali cambiamenti in Python 3 ci sono la trasformazione di print da dichiarazione a funzione built-in, una divisione tra interi migliorata e un supporto Unicode potenziato. La natura di questi cambiamenti rende Python 3 incompatibile con Python 2, in altre parole non è retrocompatibile.
Perché esistono versioni diverse di Python?
Vediamo alcuni esempi di codice per illustrare le differenze tra Python 2 e 3!
La nuova funzione print()
La dichiarazione print in Python 2 è stata sostituita dalla funzione print() in Python 3, il che significa che dobbiamo racchiudere tra parentesi l’oggetto che vogliamo stampare.
Python 2:
>>> print 'Hello DataCamp'
Hello DataCamp
Python3:
>>> print('Hello Datacamp')
Hello Datacamp
Divisione tra interi
In Python 2, dividendo numeri interi, il risultato era sempre un intero. In Python 3, il risultato include sempre i decimali, rendendo la divisione tra interi più intuitiva.
Python 2:
>>> 5/2
2
Python 3:
>>> 5/2
2.5
Supporto Unicode
In Python 2, ogni stringa Unicode deve essere contrassegnata con il prefisso “u” poiché di default utilizza caratteri ASCII. Al contrario, Python 3 memorizza le stringhe come Unicode per impostazione predefinita, soluzione più versatile rispetto alle stringhe ASCII.
Python 2:
>>> print type("Hello DataCamp!") # this is an ASCII string
<type 'str'>
>>> print type(u"Hello DataCamp!") # this is a Unicode string
<type 'unicode'>
Python 3:
>>> print(type("Hello DataCamp!")) # this is a Unicode string
<class 'str'>
Funzione range
La funzione xrange() in Python 2 non esiste più in Python 3. È stata sostituita dalla funzione range(), che offre prestazioni migliori nell’iterazione su sequenze
Python 2:
>>> xrange(1,10)
xrange(1, 10)
>>> type(xrange(1,10))
<type 'xrange'>
Python 3:
>>> range(1,10)
range(1, 10)
>>> type(range(1,10))
<class 'range'>
Nella tabella seguente trovi le principali differenze tra Python 2 e 3.
|
Python 2 |
Python 3 |
|
|
Data di rilascio |
2000 |
2008 |
|
Sintassi |
Più complessa e difficile da interpretare |
Leggibile e facilmente comprensibile |
|
Prestazioni |
Prestazioni più lente a causa di difetti di progettazione |
Prestazioni in runtime migliorate rispetto a Python 2 |
|
Funzione print |
print “Welcome to Datacamp” |
print (“Welcome to Datacamp”) |
|
Divisione tra interi |
Il risultato è un valore intero. I decimali vengono sempre troncati |
Il risultato è sempre un valore float |
|
Supporto Unicode |
Di default usa i caratteri ASCII. Per memorizzare valori Unicode, devi definirli usando la “u” |
La memorizzazione predefinita delle stringhe è Unicode |
|
Range |
Funzione xrange() per creare una sequenza di numeri |
La funzione range() è più efficiente in iterazione rispetto a xrange() |
|
Retrocompatibilità |
Relativamente facile portare Python 2 a Python 3. |
Python 3 non è retrocompatibile con Python 2 |
|
Librerie |
Molte librerie più vecchie per Python 2 non sono forward-compatible |
La maggior parte delle nuove librerie per Python 3 non può essere usata in Python 2 |
Puoi convertire Python 2 in 3?
L’evoluzione è una caratteristica fondamentale di ogni linguaggio di programmazione. I linguaggi evolvono nel tempo per migliorare le prestazioni e rimanere rilevanti per gli utenti. Il passaggio da Python 2 a 3 è stato il cambiamento più grande nella storia di Python.
Sebbene abbia senso per aziende e sviluppatori migrare prima o poi la propria codebase a Python 3 – soprattutto dopo la fine del supporto per Python 2 –, portare il codice da una versione più vecchia a una più nuova può essere un processo difficile e intimidatorio. Questo è particolarmente vero in Python, poiché molte librerie di Python 2 non sono forward-compatible.
Per fortuna, ci sono alcune risorse che possono aiutare a convertire codice Python 2 in Python 3.
- 2to3: un programma Python che prende codice sorgente Python 2.x e applica una serie di fixers per trasformarlo in codice Python 3.x valido.
- Python-Future: ti permette di usare un’unica codebase pulita, compatibile con Python 3.x, per supportare sia Python 2 che Python 3 con un overhead minimo.
- Six: una libreria di compatibilità tra Python 2 e 3. Fornisce funzioni di utilità per appianare le differenze tra le versioni, con l’obiettivo di scrivere codice compatibile con entrambe.
Python 2 vs 3: qual è il migliore?
Se qualche anno fa la questione poteva essere oggetto di dibattito, oggi non c’è dubbio che Python 3 sia la scelta migliore. Primo, Python 2 non è più supportato dal 2020. Quindi ha senso che i nuovi progetti vengano scritti in Python 3.x. Secondo, poiché Python 2 non è più supportato, tutti gli sviluppi avvengono sul fronte di Python 3. Il linguaggio ha ricevuto continui miglioramenti a ogni nuovo aggiornamento (la versione più recente è Python 3.10.5, ed esiste già una beta di Python 3.11 con importanti nuove funzionalità).
In questo contesto, l’adozione massiccia di Python 3 non sorprende. Secondo il Python Developers Survey 2021, condotto da JetBrains, in media la quota di sviluppatori Python che usavano Python 3 era del 95%. Inoltre, la quota di utenti Python 2 diminuisce di 5 punti percentuali ogni anno.
Adozione di Python 2 vs Python 3

Fonte: JetBrains
Quale versione di Python usare?
Python 3 è la versione migliore di Python al giorno d’oggi. Sceglierla è l’opzione più sicura, soprattutto per chi inizia. Dalla fine del supporto, Python 2 sta rapidamente perdendo terreno e sempre più aziende stanno migrando il loro codice a Python 3. Data la domanda crescente in molti ambiti software, l’ampio utilizzo e l’enorme collezione di librerie supportate dalla comunità, ha senso imparare Python 3.
Tuttavia, è importante notare che in alcune circostanze avrai ancora bisogno di usare Python 2. Primo, molte aziende hanno ancora codebase legacy scritte in Python 2 che sono difficili da portare a Python 3. Se questo è il caso dell’azienda o del progetto su cui lavori, dovrai imparare Python 2. Secondo, ci sono alcuni ambiti software, come il DevOps, in cui Python 2 è ancora richiesto.
In ogni caso, se stai pensando di iniziare una nuova carriera nella data science, Python 3 è la scelta intelligente. Con DataCamp è tutto pronto per te. Dai un’occhiata a i nostri corsi e percorsi su Python e inizia oggi stesso il tuo viaggio nei dati!
FAQ sulle best practice Python
Quale versione di Python è più popolare?
Python 3 è il vincitore indiscusso, con un’adozione massiccia rispetto a Python 2.
Python è un linguaggio adatto per la data science?
I linguaggi di programmazione più popolari per la data science sono Python e R. DataCamp ha un ampio catalogo di corsi di Python che ti aiuteranno a iniziare
Quale versione offre tempi di esecuzione migliori?
Sì! In quasi tutti i test, Python 3 è di solito più veloce di Python 2.
Qual è l’ultima versione di Python 2?
Python 2.7. Nel 2020 è terminato il supporto e la manutenzione di questa versione.
Perché aggiornare a Python 3?
Python 3 è un linguaggio migliore e include un set più ricco di librerie standard rispetto a Python 2. Inoltre, dal 2020, il linguaggio e le librerie standard migliorano solo in Python 3.
Posso portare Python 2 a Python 3?
Ci sono alcune risorse che puoi usare per aggiornare il tuo codice a Python 3, come 2to3, Python-Future e Six.
Posso installare sia Python 2 che 3?
Sì. Puoi farlo mantenendo ambienti virtuali separati per Python 2 e 3.

