Python è un linguaggio di programmazione multi-paradigma e di alto livello adatto allo sviluppo rapido di applicazioni in svariati ambiti: dal web al desktop, dai videogiochi allo scripting di sistema.
Ideato da Guido Van Rossum all’inizio degli anni Novanta in onore del programma televisivo della BBC "Monty Python's Flying Circus", Python si distingue dalle decine di linguaggi di programmazione esistenti per la versatilità e la somiglianza con l'inglese parlato. Inoltre, grazie alla vastissima community di sviluppatori, è molto facile trovare online esempi e consigli utili a completare i progetti con relativa facilità.
I motivi del suo successo sono da ricercare nella proposta inviata a DARPA dal nome “Programmazione per tutti”, in cui lo sviluppatore olandese spiega l’essenza del suo linguaggio: doveva essere semplice, intuitivo e potente; open source; facilmente comprensibile, come un linguaggio naturale; permettere di programmare in pochi giorni e tempi di sviluppo brevi. Per questo, viene usato sia dai programmatori alle prime armi, che dalle più grandi aziende come Google, Facebook e YouTube.
- Python: i punti di forza del linguaggio
- Un linguaggio open source, interpretato e portabile
- A cosa serve Python: le applicazioni
- Sviluppo Web, scraping, software e GUI
- Come installare Python e come programmare online
- Perché imparare Python
- Tutorial e corsi online
- Python: la sintassi di base
- Python e la programmazione ad oggetti
- Python: chiamate ad un database per inserire e recuperare dati
-
0. Python: i punti di forza del linguaggio
Trismegist san / Shutterstock
Progettato affinché fosse semplice (da apprendere, utilizzare e capire) e strutturato con una sintassi semplice, chiara e lineare, Python è un linguaggio multi-paradigma, che supporta sia la programmazione procedurale (che fa uso delle funzioni), sia la programmazione ad oggetti (includendo funzionalità come l'ereditarietà singola e multipla, l'overloading degli operatori, e il duck typing). Inoltre, supporta diversi elementi della programmazione funzionale (come iteratori e generatori).
Le caratteristiche più immediatamente riconoscibili di Python sono la tipizzazione dinamica delle variabili (nel senso che non devono essere dichiarate in anticipo, ma solo al momento dell'esecuzione del codice appena scritto, in runtime) e l'uso dell'indentazione per la sintassi delle specifiche, al posto delle più comuni parentesi.
I caratteri di spaziatura presenti all'inizio di una riga logica determinano il livello di indentazione della riga e quindi, il raggruppamento delle istruzioni a cui questa appartiene. La priorità logica delle operazioni da eseguire è determinata dal numero di spazi presenti all'inizio della riga contenente il comando.
Il motivo del successo di Python è da ricercare nella sua versatilità, facilità di sviluppo e apprendimento, e al contempo, potenza di programmazione.
Python è un linguaggio di alto livello che è al tempo stesso semplice e potente. La sintassi e i diversi moduli e funzioni già inclusi nel linguaggio sono consistenti, intuitivi e facili da imparare, e il design del linguaggio si basa sul principio del least astonishment (cioè della "minor sorpresa": il comportamento del programma coincide con quanto ci si aspetta).
Ogni installazione di Python include una standard library, vale a dire una collezione di oltre 200 moduli per svolgere i compiti più disparati, come l'interazione con il sistema operativo e il filesystem, o la gestione di diversi protocolli. Inoltre, il Python Package Index consente di scaricare ed installare migliaia di moduli aggiuntivi creati e mantenuti dalla comunità.
La gestione della memoria e la conseguente pulizia è invece affidata ad un ciclo di controllo combinato tra reference counting (contatore delle referenze) e un garbage collector che si occupa automaticamente dell'allocazione e del rilascio della memoria. Questo consente al programmatore di usare variabili liberamente, senza doversi preoccupare di dichiararle e di allocare e rilasciare spazi di memoria manualmente (cosa che è invece necessaria in linguaggi di più basso livello come il C o il C++).
Per approfondimento: La storia dei linguaggi di programmazione
-
1. Un linguaggio open source, interpretato e portabile
Shutterstock
Python è completamente gratuito ed è possibile usarlo e distribuirlo senza restrizioni di copyright. Nonostante sia free, da oltre 25 anni Python ha una comunità molto attiva, e riceve costantemente miglioramenti che lo mantengono aggiornato e al passo con i tempi.
Anche se Python è considerato un linguaggio interpretato, i programmi vengono automaticamente compilati in un formato chiamato bytecode prima di essere eseguiti. Questo formato è più compatto ed efficiente, e garantisce prestazioni elevate. Inoltre, diverse strutture dati, funzioni e moduli Python sono implementati internamente in C per essere ancora più performanti.
Oltre all'interprete classico scritto in C (chiamato CPython), esistono altri interpreti che consentono l'integrazione con altri linguaggi. IronPython consente di utilizzare Python all'interno del framework .NET, di usarne le funzioni e di interagire con altri linguaggi .NET. Per poter invece integrare Python e Java è possibile utilizzare Jython. Esistono poi altri interpreti, come PyPy: un'implementazione altamente performante scritta in Python.
Infine, è un linguaggio portabile sviluppato in ANSI C. È possibile usarlo su diverse piattaforme come: Unix, Linux, Windows, DOS, Macintosh, Sistemi Real Time, OS/2, cellulari Android e iOS. Ciò è possibile perché si tratta di un linguaggio interpretato, quindi lo stesso codice può essere eseguito su qualsiasi piattaforma purché abbia l’interprete Python installato.
-
2. A cosa serve Python: le applicazioni
Shutterstock
Python può essere utilizzato per automatizzare attività, eseguire calcoli, creare interfacce utente (nota anche come GUI, dall'inglese Graphical User Interface), creare backend di siti Web, accedere a database, scaricare informazioni da Internet, ecc. È un linguaggio versatile, facile da imparare e da scrivere e, sebbene perfetto per i programmatori principianti, è altrettanto utile e potente per i professionisti esperti.
La dotazione standard e le librerie di terze parti arricchiscono Python con funzionalità che lo rendono duttile in svariati ambiti, anche quelli più tecnologicamente avanzati.
Queste stesse caratteristiche rendono Python l’alleato perfetto per l’intelligenza artificiale permettendo di catturare idee complesse con poche righe di codice, impossibile con altri linguaggi. Librerie come “Keras” e “TensorFlow” contengono molte informazioni sulle funzionalità dell’apprendimento automatico. Ci sono poi librerie fornite da Python, ampiamente utilizzate negli algoritmi AI, come “Scikitl”: una libreria di apprendimento automatico gratuita che presenta numerosi algoritmi di regressione, classificazione e raggruppamento.
L’uso di Python è molto diffuso nell’analisi dei dati e nell’estrazione di insight utili per le aziende, per questo viene utilizzato nel campo dei Big Data. È possibile installare moduli per interfacciarsi con altri database (PostgreSQL, Oracle, MySQL, e altri) e usufruire di librerie di elaborazione dati come “Pydoop”. Altre librerie come “Dask” e “Pyspark” semplificano ulteriormente l’analisi e la gestione degli stessi. Ulteriori funzionalità aiutano a generare informazioni in tempo reale e convertirle nei linguaggi utilizzati dai Big Data.
Python è anche usato in ambito scientifico, perché si occupa di dati tabulari, a matrice e di dati statistici e li visualizza con librerie popolari come “Matplotlib” e “Seaborn”. Inoltre, Python è ideale per i framework di test, in quanto molti framework integrati aiutano il debug del codice e offrono flussi di lavoro ed esecuzione veloci. Strumenti di testing come “Unittest”, “Pytest” e “Nose Test” semplificano la produzione di testi ed essendo multipiattaforma utilizza browser con frame diversi, come “PyTest” e “Robot”.
Per approfondimento: Intelligenza Artificiale, cos'è e cosa può fare per noi
-
3. Sviluppo Web, scraping, software e GUI
Shutterstock
Python è impiegato nello sviluppo Web perché, consentendo di creare molto contenuto con meno righe di codice, rende più efficiente la creazione di prototipi. Uno dei framework web più popolari è “Django” che può essere utilizzato per creare applicazioni Web dinamiche e molto sicure. Tra gli altri, “Flask” è un micro framework che permette di creare rapidamente siti semplici; “Web2py” è un altro ottimo framework facile da usare. Tra le aziende più conosciute che utilizzano Python ci sono Instagram, Reddit, Uber e Spotify.
Il linguaggio Python viene utilizzato anche per lo scraping, ovvero per ottenere informazioni da altri siti Web. Applicazioni come Instagram, Bit Bucket, Pinterest sono integrate in tali framework. Le applicazioni supportate da Python vanno però ben oltre i suddetti campi perché riguardano anche lo sviluppo dei giochi, utilizzando librerie come PySoy (un motore di gioco 3D basato su Python). Tra i giochi sviluppati con Python ci sono Disney’s Toontown Online, Battlefield 2, Frets on Fire, ecc.
Ma anche la rete dello sviluppo dei software. Molti pacchetti Python, come NumPy, Tkinter, SciPy, ecc., semplificano le procedure di sviluppo software. È anche possibile sviluppare applicazioni complesse che effettuano calcoli scientifici e numerici. Tra i grandi che lo usano per lo sviluppo software ci sono Dropbox, PyChess, BitTorrent, Gramps, ecc.
Grazie alla struttura modulare di Python, funziona su diversi sistemi operativi e permette di costruire GUI desktop utilizzando un efficiente framework, modulo o processore di testo, come PyGUI, PyGtk, PyQt4, PyQt5, ecc.
Per approfondimento: Tecniche di web scraping
-
4. Come installare Python e come programmare online
DANIEL CONSTANTE / Shutterstock
Python 3 è la versione più moderna del linguaggio, contraddistinta da alcuni cambiamenti notevoli che la rendono incompatibile con Python 2 e da una community online in forte crescita.
Come installare Python su Windows
Per procedere con l’installazione su Windows è possibile farlo tramite Microsoft Store, consigliato perché gestisce gli aggiornamenti automaticamente e può anche essere disinstallato facilmente; oppure, con il programma di installazione dal sito Web ufficiale.
In quest’ultimo caso, nella pagina di download è possibile trovare il file .exe per le versioni Windows a 32bit e 64bit. È sufficiente lanciarlo e seguire i vari passaggi, ricordandosi di selezionare la voce Add Python 3.X to PATH all'inizio dell'installazione. Dopo di che, per default, Python verrà collocato in C:\Python3X (ad esempio C:\Python35 per la versione 3.5). A questo punto è già possibile utilizzarlo, tramite Start > Tutti i programmi > Python3.5 > Python.
Avendo selezionato Add Python 3.X to PATH durante l'installazione, dovrebbe essere possibile avviare Python dal prompt dei comandi semplicemente digitando il comando py o py -3. Nel caso in cui, in fase di installazione, non avessimo selezionato la suddetta opzione, è comunque possibile aggiungere Python alla variabile d'ambiente PATH manualmente, seguendo i seguenti passaggi. Andiamo su Pannello di controllo > Sistema> Impostazioni di Sistema Avanzate > Variabili d'ambiente, e modifichiamo la variabile PATH tra le variabili di sistema aggiungendo C:\Python3X (dove la X corrisponde alla versione installata).
Per verificare che tutto sia andato a buon fine, avviamo il prompt dei comandi (Start > Esegui > cmd) e si digita: echo %PATH%. Se l'output include la stringa C:\Python3X, sarà possibile avviare Python digitando semplicemente py, py -3, o python. Se Python è stato installato correttamente, visualizzeremo un breve messaggio che indica la versione dell'interprete di Python, seguita dal prompt (>>>).
Come installare Python su Linux
Nei sistemi Linux spesso Python è già presente nel setup di base. È comunque possibile verificarne la presenza e le versioni presenti. Per farlo, digitiamo da shell: $ python oppure: $ python3
Se entrambi i comandi falliscono, Python non è installato. Se python avvia Python 2 e il comando python3 non è presente, solo Python 2 è installato. Se invece il comando python o python3 avviano Python 3, allora Python 3 è installato.
Nel caso in cui Python 3 non sia installato, sarà necessario installarlo usando il gestore dei pacchetti per sistemi Linux: apt per distribuzioni basate su Debian; rpm per distribuzioni basate su Red Hat. In alternativa, è possibile scaricare e compilare i sorgenti di Python manualmente.
Più in dettaglio, in base al sistema in uso è possibile avviare uno dei seguenti comandi: $ yum install python3, per distribuzioni basate su pacchetti rpm, come Red Hat, Fedora, Centos; $ apt-get install python3, per distribuzioni basate su Debian, come Ubuntu.
Infine, vediamo come installare Python compilando i sorgenti. Per prima cosa, dobbiamo verificare l’ultima versione dei sorgenti dal sito, quindi lanciamo i seguenti comandi:$ cd /tmp
$ wget http://www.python.org/ftp/python/3.x/python-3.x.tar.bz2
Così facendo, abbiamo scaricato un archivio .tar.bz2 contenente i sorgenti Python. Estraiamone ora il contenuto:
$ tar -xjf python-3.x.tar.bz2
$ cd python-3.x
Non resta che avviare l'installazione:
$ ./configure
$ make
$ sudo make install
Nota: è possibile usare make altinstall invece di make install per evitare che la versione che è appena stata installata sia associata al comando python.
Come installare Python su Mac
Come nei sistemi Linux, anche nei Mac dovremmo trovare Python già pronto all’uso. Per verificarlo, ancora una volta basta avviare una finestra di terminale e digitare python. Probabilmente verrà mostrata la versione 2.7, ma noi vogliamo usare la 3.X. Quindi bisognerà visitare il sito e scaricare la versione per Mac OS più adatta alle nostre esigenze. Infine, potremo procedere all’installazione.
Al termine dell’installazione, lanciando python da terminale apparirà ancora la vecchia versione. Pertanto, bisogna aprire il terminale e digitare:
vim ~/.bash_profile
Una volta aperto il file, aggiungiamo la seguente riga:
alias python="python3"
Ora, provando di nuovo a lanciare python da terminale, di default si avvierà la versione 3.X.
Come usare Python online
Per cominciare a programmare in Python senza installare alcun software sul PC, si può usare un tool di emulazione online che, in sostanza, consente al sistema host di emulare le qualità di un sistema client. Sono tool gratuiti che permettono di esercitarsi con il linguaggio di programmazione, in modo rapido e poco impegnativo. Molto utili per iniziare a programmare, di contro, inibiscono molte funzionalità.
Per approfondimento:
-
5. Perché imparare Python
Shutterstock
Imparare Python presenta diversi vantaggi. Python non è solo facile da imparare e codificare, ma accelera l’intero processo di sviluppo. Dispone di una vasta gamma di framework, pacchetti, librerie e moduli che non richiedono di fare tutto da zero. Aiuta ad automatizzare i processi standard e a risparmiare tempo per concentrarsi sulla logica e su altri aspetti vitali dello sviluppo web e software.
L’estrema versatilità è una delle ragioni della sua popolarità. Python, infatti, funziona con la stessa efficienza sia su progetti piccoli che su larga scala. Oltre agli impieghi citati sopra, gli sviluppatori lo usano per deep learning, data engineering, automazione dei processi, Internet delle cose (IoT) e altro ancora. Oltre all’enorme numero di funzioni, metodi, framework e librerie supportate, la leggibilità, la popolarità e l’usabilità di Python hanno incoraggiato lo sviluppo di molte altre librerie, rendendo il linguaggio ancora più user-friendly.
Un aspetto da tenere in considerazione è la costante crescita della domanda di sviluppatori Python visto il suo impiego nelle tecnologie emergenti.
Python viene utilizzato in servizi di business, assicurazioni, aerospaziale, vendita al dettaglio, banche, finanza, infotech, consulenza, sanità e hardware, solo per citarne alcuni. Le principali aziende che usano Python sono Google, NASA, YouTube, Quora, IBM, HP, Qualcomm e Dropbox; e anche loro assumono spesso sviluppatori dedicati. Secondo Indeed, nel 2021 lo stipendio medio degli sviluppatori Python negli Stati Uniti è di 110.840 dollari all’anno.
Per approfondimento: Come imparare a programmare sul web
-
6. Tutorial e corsi online
Shutterstock
Anche se è disponibile una documentazione ufficiale di Python, a volte si può rimanere bloccati, soprattutto se si è principianti. In tal caso, un’ampia community di supporto può fornire un aiuto concreto. Online ci sono anche forum come Stack Overflow e community open source per esplorare il linguaggio come molti corsi, tutorial, siti web e altre risorse dedicate.
Nella sezione wiki del sito ufficiale sono raccolti articoli introduttivi, guide e tutorial relativi ai primi passi da muovere nel mondo Python. Viene spiegato quali programmi installare e come farlo, come realizzare i primi algoritmi ed i primi programmi; quali funzioni utilizzare e quando utilizzarle. Grazie alla numerosa comunità di supporto, inoltre, è stato realizzato un tutorial divenuto con il passare degli anni sempre più preciso e puntuale.
Qualsiasi dubbio o incertezza si possa avere nel corso del proprio lavoro con il linguaggio di programmazione creato da Van Rossum può essere risolto facendo appello a questa guida.
Ci sono anche diverse piattaforme di e-learning che offrono corsi gratuiti per apprendere i concetti basilari di questo linguaggio di programmazione. Su Coursera si trovano videolezioni tenute da Charles Severance e diversi corsi avanzati dell'Università del Michigan, mentre Udacity offre un corso di sei settimane per muovere i primi passi nel mondo di Python.
Ancora, su GitHub, ideata da Linus Torvalds per ospitare progetti e programmi open source, è possibile trovare anche raccolte di risorse per apprendere i diversi linguaggi di programmazione. Repository come CodeMentor, offrono una raccolta di siti utili Python per imparare a programmare e risolvere i problemi più comuni che si incontrano con questo linguaggio di programmazione.
Per approfondimento: Come imparare a programmare Python
-
7. Python: la sintassi di base
Trismegist san / Shutterstock.com
Python è uno dei linguaggi di programmazione più versatili, garantendo una sintassi estremamente semplice da apprendere; basta tenere a mente alcune indicazioni generali per il suo utilizzo.
Gli identificatori servono per identificare le variabili, le funzioni, le classi e i moduli; devono necessariamente iniziare con una lettera o con un trattino basso e possono contenere lettere, cifre e caratteri di sottolineatura.
Python fa distinzione tra caratteri maiuscoli e minuscoli, è quindi opportuno prestare sempre grande attenzione a queste differenze. A questo proposito, bisogna tenere a mente delle “convenzioni” per denominare gli identificatori.
Il nome della classe inizia sempre con una lettera maiuscola; un identificatore che ha come prima lettera un trattino basso, indica un identificatore privato; se inizia con due trattini bassi, ciò vuol dire che è fortemente privato; se inizia e finisce con due trattini bassi allora indica un nome speciale definito nel linguaggio.
L’indentazione in Python sostituisce la parentesi e viene utilizzata per delimitare blocchi di codice; le spaziature all’inizio di una riga logica mostrano il livello di indentazione della riga stessa e il raggruppamento delle istruzioni di cui fa parte. Quindi, la priorità logica delle operazioni dipende dal numero di spazi all’inizio della riga di comando.
Su Python ogni comando si scrive su una singola riga, non ha bisogno di caratteri di termine e si può considerare come un’intera istruzione.
Python è uno dei linguaggi di programmazione più utilizzati in assoluto, soprattutto perché è molto intuitivo e ha una sintassi facilmente memorizzabile
Tuttavia, usando il backslash o le virgolette triple, si può indicare che l’istruzione continua anche nella linea successiva.
Tutte le istruzioni scritte tra le parentesi quadre, graffe e tonde non necessitano di nessun carattere per continuare sulle righe successive.
Le virgolette si usano per definire stringhe di caratteri. Python accetta qualunque tipo di virgolette a patto che vengano utilizzate sempre le stesse.
Prima di inserire un nuovo pezzo di codice, generalmente, vengono scritte una o due righe per descriverne il funzionamento. Per lasciare un commento bisogna inserire un cancelletto in modo da identificarlo come qualcosa al di fuori della stringa di codice.
Le docstring sono simili ai commenti ma rappresentano descrizioni più specifiche. Inoltre, vengono conservate durante l’esecuzione in modo che possano essere ispezionate dal programma. Le docstring iniziano e finiscono con tre virgolette singole o doppie.
Le variabili dinamiche sono un’altra delle caratteristiche di Python e vanno dichiarate solo al momento dell’esecuzione in runtime del codice. Per cambiare il tipo di una variabile è sufficiente che l’utente gli assegni un differente valore.
Il casting in programmazione rappresenta la conversione di un dato da un tipo ad un altro.
Esistono funzioni di casting per ogni tipologia di dato, tra le più utilizzate troviamo: str(), float(), list() o dict().
Per ottenere il tipo di dati di una variabile è possibile utilizzare la funzione type().
-
8. Python e la programmazione ad oggetti
Shutterstock
Progettato affinché fosse semplice (da apprendere, utilizzare e capire) e strutturato con una sintassi chiara e lineare, Python è unlinguaggio multi-paradigma, che supporta sia la programmazione procedurale, sia la programmazione ad oggetti. Inoltre, supporta diversi elementi dellaprogrammazione funzionale.
Mentre nella programmazione procedurale le funzioni (o procedure) sono l'elemento organizzativo principale, nella programmazione ad oggetti (conosciuta come OOP, ovvero Object-Oriented Programming) a fare da padroni sono gli oggetti.
Il vantaggio degli oggetti è quello di racchiudere in un'unica unità organizzativa sia i dati (attributi) che i metodi (operazioni disponibili). Ma vediamo il perché optare per l’uso della programmazione orientata agli oggetti in Python
Anzitutto, una volta imparato l’OOP in Python, sarete in grado di usarlo anche negli altri moderni linguaggi di programmazione come Java, PHP, Ruby, Javascript, C#, Kotlin che sono nativamente orientati agli oggetti o includono opzioni per funzionalità orientate agli oggetti.
L’OOP permette di codificare più velocemente, il chenon equivale a scrivere meno righe di codice, ma implementare più funzioni in meno tempo. Infatti, tramite il concetto dell’astrazione, il codice diventa più conciso e leggibile. Inoltre, aiuta ad evitare il “codice spaghetti”, ilgroviglio di linee di codice infinite che si crea continuando ad aggiungere funzioni: la possibilità di comprimere tutta la logica in oggetti evita lunghi pezzi di if annidati.
Una volta acquisita un po’ di esperienza con OOP, sarete in grado di pensare ai problemi come a piccoli e specifici oggetti, comprensione che porta a una rapida inizializzazione del progetto.
-
9. Python: chiamate ad un database per inserire e recuperare dati
Sharaf Maksumov / Shutterstock.com
Molto apprezzato per semplicità e flessibilità, Python è un linguaggio di programmazione che sta prendendo sempre più piede. Come ogni linguaggio di programmazione che si rispetti, anche Python dispone degli strumenti per accedere ai sistemi di gestione di data base relazionali.
A tale scopo è stata sviluppata una raccolta moduli, denominata "DB-API", che crea un'interfaccia unica di accesso ai database, indipendentemente dal tipo di sistema. Python Database API supporta un'ampia gamma di server database come Gadfly, mSQL, MySQL, PostgreSQL, Microsoft SQL Server 2000, Informare ecc.
Nota bene: occorre scaricare un modulo API DB separato per ogni database a cui accedere
Per stabilire una connessione a un database e comunicare con esso utilizzando Python, occorre creare un oggetto di connessione a cui vengono fornite le informazioni necessarie per individuare e accedere al database (host, nome utente, password e nome del database).
Una volta connessi al database, dovremmo essere in grado di scrivere query nel database direttamente da Python. Ma prima, dobbiamo creare un oggetto cursore che utilizza il metodo di esecuzione per eseguire la query. L'output risultante della query può essere recuperato con il metodo fetchall.
Con il metodo cursor.execute è possibilecreare tabelle o record del database. L'istruzione SQL INSERT serve a creare un record nella tabella. Con il metodo rollback, puoi ripristinare il database allo stato dell'ultimo commit. Una volta terminata la comunicazione con il database, è possibile terminare la connessione con il metodo close.
Per recuperare informazioni dal database, è possibile utilizzare tre metodi: fetchone() che recupera la riga successiva di un set di risultati; fetchall() che recupera tutte le righe; rowcount che restituisce il numero di righe che sono state interessate da un metodo execute().
Per approfondimento: Come accedere a un database con Python