Python

Python logo

Il primo linguaggio che vedremo quest'anno è Python. Python è un linguaggio completamente open-source, il codice sorgente è reperibile sulla pagina ufficiale di GitHub ed è rilasciato sotto la Python License.

Python logo Python è stato creato alla fine degli anni '80 dall'olandese Guido van Rossum, all'età di circa trent'anni. Come molti colleghi nell'ambito informatico, il suo operato è stato costantemente guidato da alcuni ideali, in particolare van Rossum credeva che la programmazione dovesse accessibile a tutti, e quindi le scelte per il linguaggio hanno avuto sempre questa direzione. Nel 1999 sono state pubblicate delle linee guida che riassumevano questi concetti, conosciute come "The Zen of Python". È anche possibile leggere queste linee guida direttamente dentro Python, scrivendo `import this` :)

Se volete provare gli snippet di codice in questa pagina, potete usare il playground online di SoloLearn.

Caratteristiche

Python ha una sintassi essenziale, eliminando quasi tutta la punteggiatura.

Esempio di un programma completo Python valido:

catalogue = ["Harry Potter e il calice di fuoco", "Il rosso e il nero", "Il piccolo principe"]
for title in catalogue:
   print(title)
print("goodbye")

Nella prima riga, viene dichiarata una nuova variabile catalogue. Il tipo della variabile viene inferito dal valore assegnato; in questo caso, siccome assegniamo qualcosa che è tra parentesi quadre, il tipo di catalogue è una lista. Fate attenzione: la riga non finisce con il punto e virgola!

Nella seconda riga c'è un ciclo for. Notate che non ci sono parentesi di nessun tipo, né tonde né graffe; attenzione però che la riga in questo caso finisce con i due punti Le stesse regole valgono anche per il condizionale if.

Ma se non ci sono parentesi graffe, come si fa a sapere dove finisce il contenuto del ciclo for? Qui c'è il colpo di genio di van Rossum: usare l'indentazione del codice per definire dove finiscono i blocchi, ed obbligare lo sviluppatore ad usare le buone pratiche di indentazione!

Quindi vediamo che il contenuto del for è solo print(title), mentre la riga successiva, la quarta, è fuori dal ciclo.

Se eseguiamo il codice, avremo il seguente output su console:

Harry Potter e il calice di fuoco
Il rosso e il nero
Il piccolo principe
goodbye

Importare una libreria esterna

Se ci servono delle librerie esterne per fare delle operazioni particolari, su usano le keyword import e from. Ad esempio immaginiamo di voler stampare la data e l'ora attuali.

from datetime import datetime
print(datetime.now())

che avrà come output il giorno e l'ora attuali, ad esempio:

2019-11-29 21:57:27.676783

In generale, dopo il from ci va il nome di un file Python (senza estensione), e dopo import il nome di una variabile. In questo esempio, nella prima riga importiamo la variabile datetime da un file che si chiama con lo stesso nome. Il file datetime nel caso specifico non è creato da noi ma è una libreria di sistema, ma possiamo usare la stessa sintassi anche per i nostri file.

Creare una classe

Per creare una classe, ad esempio la classe Book, si usa la seguente sintassi:

class Book:
   def __init__(self,title,author):
      self.title = title
      self.author = author

Vediamo bene cosa abbiamo fatto. La prima riga class Book dichiara la classe Book. Nella seconda riga stiamo usando la funzione di sistema __init__(self,...) che è il costruttore della classe, ovvero serve per costruire un nuovo oggetto della classe. Il primo parametro è sempre la keyword self, che identifica l'oggetto che stiamo andando a creare. I parametri successivi servono per inizializzare l'oggetto; nel nostro caso stiamo dicendo che il nostro libro deve sempre avere un autore ed un titolo.

Si può vedere che init è una funzione di sistema perché il nome inizia e finisce con due trattini bassi. Questa è una convenzione specifica di Python.

Per creare un oggetto di questa classe, usiamo la seguente sintassi:

harry_potter = Book("Harry Potter ed il principe mezzosangue","J.K.Rowling")

print(harry_potter.title)

Stiamo dichiarando una variabile chiamata harry_potter che è un oggetto della classe Book, inizializzata con i parametri che seguono. Fate attenzione: non bisogna specificare il parametro self quando si costruisce un oggetto, perché è una variabile che passa Python automaticamente alla funzione __init__.

Mettendo insieme i pezzi, il codice finale per creare una classe ed un oggetto di questa classe sarà:

class Book:
   def __init__(self,title,author):
      self.title = title
      self.author = author
   
harry_potter = Book("Harry Potter ed il principe mezzosangue","J.K.Rowling")

print(harry_potter.title)

L'output di questo snippet sarà:

Harry Potter ed il principe mezzosangue

Notate l'indentazione: si può capire che la variabile harry_potter viene dichiarata fuori dalla classe perché non ha indentazione.

Librerie aggiuntive

Solo le librerie esterne più comuni, come datetime, sono già pre-installate in Python. Esistono infatti decine di migliaia di librerie, in continuo cambiamento, scaricarle tutte all'inizio sarebbe impossibile oltre che inutile!

Fortunatamente esiste un semplice comando per scaricare ed installare nuove librerie. Aprire un terminale sul proprio computer (anche all'interno di Visual Studio Code), e scrivere:

pip3 install <nome-libreria>

Vediamo che pip3 è un comando che gestisce i pacchetti Python (Pip sta per "Pip installs package", è un acronimo ricorsivo), e <nome-libreria> è il nome della libreria che vogliamo scaricare.

Riferimenti W3Schools

Il sito w3schools è un buon riferimento per imparare il Python. Consigliamo in particolare le seguenti pagine:

A breve ci serviranno anche i seguenti concetti: