back to top

Guida Python

Installare Python su Linux, Mac e Windows

Nel momento in cui viene scritta questa trattazione la versione più recente di Python è la 3.4.3, mentre l'ultima release della versione 2.x è stata la 2.7.10 frutto di un aggiornamento risalente al maggio del 2015; entrambi i rami di sviluppo sono attualmente supportati dalla community di sviluppatori che si occupa della sua implementazione; ciò pone un problema dal...

La nostra prima applicazione con Python: Ciao Mondo!

Di default Python offre un potente strumento per la programmazione denominato IDLE, esso mette a disposizione un'interfaccia grafica con la quale lanciare istruzioni basate sul linguaggio e creare file eseguibili con estensione ".py". Vengono inoltre fornite feature avanzate per incrementare il livello di produttività delle sessioni di sviluppo come per esempio i suggerimenti per il completamento delle istruzioni, l'evidenzione del...

Le variabili in Python

Le variabili sono dei costrutti comuni a quasi tutti i linguaggi di programmazione, esse nascono dall'esigenza di avere a disposizione uno spazio di memoria al quale associare dinamcamente delle informazioni; questa operazione per la memorizzazione diretta dei dati consiste in pratica nell'assegnazione di un valore alle variabili. Per comprendere il funzionamento di tale processo di assegnazione è possibile avviare IDLE...

Gli operatori di Python

Gli operatori non sono un'esclusiva di Python, in generale tutti i linguaggi di programmazione e sviluppo dispongono di questi costrutti sintattici; è possibile definirli come dei simboli attraverso i quali specificare quale regola dovrà essere applicata a degli operandi per l'ottenimento di uno determinato risultato. Gli operatori possono, per esempio, determinare un'assegnazione, ne sono stati descritti alcuni di questo tipo...

I costrutti condizionali in Python: If, Else, Elif

Come la maggior parte dei linguaggi per la programmazione e lo sviluppo anche Python mette a disposizione dei coders i cosiddetti costrutti condizionali; in sostanza parliamo di espressioni il cui esito, cioè il risultato prodotto, dipende dalla soddisfazione o meno di una condizione precedentemente definita. Per la definizione di un costrutto condizionale si utilizzano le keywords if, l'unica obbligatoria,...

Switch in Python (usando match – case)

Il case switch è una struttura di controllo comune a molti linguaggi di programmazione (come Java e C++) che permette di eseguire operazioni diverse in base al valore di una variabile che viene utilizzata come controllo. Fino alla versione 3.10, Python non aveva una funzionalità integrata per implementare gli switch statement, quindi i programmatori dovevano necessariamente fare ricorso a if ed elif...

Il ciclo for in Python

Il ciclo (loop) for è uno dei cicli di iterazione messi a disposizione dal linguaggio Python, si tratta in sostanza di un costrutto, comune anche ad altri linguaggi, che consente di ripetere un'operazione un certo numero di volte, più tecnicamente "iterare una sequenza o un oggetto", fino alla soddisfazione di una determinata condizione (implicita) che terminerà il ciclo. Per chiarire...

Il ciclo while in Python

Il ciclo while si differenzia dal ciclo for precedentemente descritto più a livello sintattico che funzionale, in generale è comunque possibile affermare che mentre nel ciclo for le iterazioni proseguono fino al verificarsi di una determinata condizione (ad esempio il raggiungimento di un dato incremento di valore a carico di una variabile), nel ciclo while le iterazioni continuano invece...

Controllo del flusso di esecuzione con break e continue in Python

Terminare un ciclo con break Grazie agli esempi proposti in precedenza è stato possibile introdurre l'istruzione break, quest'ultima, quando impiegata all'interno di un ciclo si occuperà di terminarlo in corrispondenza di un determinato evento, come per esempio il verificarsi di una condizione specifica o dell'eventualità opposta. Sostanzialmente break rappresenta uno strumento attraverso il quale influenzare il flusso di esecuzione di...

Le funzioni in Python

E' possibile definire le funzioni come degli insiemi composti da una o più istruzioni necessarie per lo svolgimento di un determinato compito; uno dei vantaggi derivanti dall'utilizzo di questi costrutti riguarda il fatto che essi possono essere definiti una volta sola e poi utilizzati in più di un'occasione all'interno della medesima applicazione, ciò avverrà tramite un meccanismo denominato "chiamata...

Gestire gli argomenti delle funzioni in Python

Per la definizione delle funzioni in Python è necessario tener presente alcune regole sintattiche in modo da evitare la generazione di errori. Vi sono poi dei cotrutti particolari che semplificheranno il lavoro dello sviluppatore. Il numero degli argomenti Quando si definisce una funzione, in Python è necessario che gli argomenti passati ad essa come parametri siano definiti a priori sia nella...

Funzioni Lambda e ricorsione in Python

Funzioni anonime In Python le funzioni Lamba sono dei particolari costrutti sintattici derivati dal linguaggio Lisp e chiamati anche funzioni anonime; rispetto alle comuni funzioni definite dall'utente esse non sono associate ad un nome, da qui la caratteristica di essere "anonime", non vengono introdotte dalla parola chiave def, prevedendo invece la keyword lambda, e possono essere seguite soltanto da un'unica...

Le liste in Python

In Python è possibile definire una lista, alla quale si potrà attribuire un nome, inserendo degli elementi tra parentesi quadre (""). Chi già lavora con altri linguaggi per la programmazione o lo sviluppo conoscerà sicuramente gli array, o "vettori", che sono delle variabili destinate a contenere ulteriori variabili; sintatticamente e concettuamente le liste possono ricordare gli array, ma il...

Gestione delle liste in Python

Modificare gli elementi di una lista Gli elementi presenti all'interno di una lista potranno essere modificati dinamicamente; nel prossimo capitolo analizzeremo un costrutto sintattico simile alle liste, le tuple che abbiamo analizzato parzialmente in precedenza; queste ultime funzionano in modo simile alle liste ma hanno la caratteristica di essere immutabili, mentre per quanto riguarda le liste si avrà una...

Le tuple in Python

Come anticipato, le tuple sono dei costrutti che, come accade per le liste, possono contenere una raccolta di elementi; la differenza sostanziale tra le liste e le tuple sta però nel fatto che mentre nelle prime gli elementi che le costituiscono possono essere modificati, nelle tuple divengono immutabili. La sintassi per la definizione delle tuple prevede che gli elementi...

Gestire le tuple in Python

Come anticipato, le tuple si differenziano dalle liste soprattutto per via del fatto di essere immutabili, una volta che viene assegnato un elemento ad una tupla quest'ultimo non potrà essere modificato. E' comunque possibile alterare alcune componenti di una tupla, se per esempio un elemento di una tupla è rappresentato da un tipo di dato modificabile, come nel caso...

Funzioni per liste e tuple

In Python le funzioni native per le liste e le tuple sono le medesime, presentano gli stessi nomi e la stessa sintassi e prevedono gli stessi valori di ritorno; vale quindi la pena analizzarle insieme per evitare inutili ripetizioni. Chiaramente faremo riferimento soltanto ai costrutti più comunemente utilizzati. Funzioni comuni di liste e tuple Un primo esempio sono le semplici funzioni...

I set in Python

I set sono delle entità simili alle liste e alle tuple, essi sono definibili come delle raccolte non ordinate di elementi in cui ciascuno di essi è unico e immutabile. In sostanza un set è composto da elementi non duplicati che non possono essere modificati, è invece possibile modificare i set, per esempio aggiungendo o rimuovendo elementi. Definire un...

Operare con i set in Python

Le funzioni disponibili in Python per i set sono in linea di massima le stesse descritte in precedenza per le liste e le tuple, motivo per il quale non sarà necessario ripeterle. Più interessante è analizzare alcuni utilizzi pratici dei set che si prestano in modo particolare ad operazioni di insieminstica come le unioni, le intersezioni, le differenze e...

I dizionari in Python

In Python i dizionari (dictionary), o semplicemente dict, sono delle raccolte non ordinate di oggetti che appartengono ai cosiddetti tipi di dato compound (o container) esattamente come le liste, le tuple e i set, ma differenza di questi i dizionari non presentano come elementi dei semplici dei valori, bensì delle coppie composte da chiavi e valori. Tale caratteristica è...

Operazioni sui dizionari in Python

I dizionari in Python sono dei costrutti iterabili, questa caratteristica li rende particolarmente utili nelle operazioni che prevedono la selezione di valori specifici o la restituzione di valori compresi all'interno di intervalli. Quanto esposto diviene ancora più chiaro nel caso in cui i dizionari, e i valori che rappresentano, vengano utilizzati all'interno di cicli o nei costrutti condizionali. Comprehension dei...

I moduli in Python

In Python un modulo è essenzialmente un file che contiene del codice scritto in questo linguaggio. I moduli sono caratterizzati dall'estensione ".py", quindi al file "istruzione.py" corrisponderà il nome modulo "istruzione". Lo scopo dei moduli è duplice: essi contengono istruzioni e definizioni che possono essere riutilizzate quante volte si vuole senza la necessità di doverle riscrivere, basterà "importare"...

Moduli Python: directory, namespace e variabili d’ambiente

Per utilizzare al meglio i moduli è fondamentale capire come essi vengono gestiti da Python, approfondire questo argomento consente di scoprire l'utilità di alcune funzioni native del linguaggio che possono rivelarsi fondamentali per migliorare la produttività in sede di sviluppo, risparmiare sulla quantità di codice digitato e ottimizzare le prestazioni delle nostre applicazioni. Il meccanismo di importazione dei moduli...

I package in Python

I moduli possono essere considerati sia dei contenitori (di definizioni, istruzioni, metodi..) che dei contenuti collezionabili all'interno di insiemi più strutturati detti package. Questi ultimi rispondono alla necessità di organizzare i moduli in modo razionale: plausibilmente uno sviluppatore lavorerà in modo più semplice e produttivo se potrà dedicare spazi differenti a moduli con funzionalità diverse, per questo motivo i...

Gestire i file con Python

Come qualsiasi altro linguaggio di programmazione che si rispetti anche Python integra delle funzionalità appositamente dedicate alle gestione dei file. Lo sviluppatore ha quindi a disposizione diverse funzioni native attraverso le quali aprire, leggere, scrivere e chiudere un file dopo averlo manipolato; sono inoltre previste delle modalità (o privilegi) di accesso ai documenti che consentiranno di effettuare tutte le...

Python: verificare se un file esiste

In Python, come abbiamo visto nella lezione precedente della nostra guida, è possibile compiere diverse operazioni sul filesystem, come la creazione, la lettura e la scrittura di file. Una delle operazioni più importanti quando si lavora con il filesystem, però, è la verifica dell'esistenza di un file. Esaa è fondamentale prima di effettuare qualsasi operazione sui file al fine di...

Operare con le directory in Python

Come qualsiasi altro linguaggio di programmazione, Python individua le directory in quanto insiemi di file e sotto-cartelle, directory vuote verranno quindi interpretate come spazi di memoria destinati ad ospitare eventuali contenuti. La gestione delle directory è resa possibile dalla disponibilità di un modulo apposito, os, che può essere utilizzato tramite importazione. Rilevazione della directory corrente Il metodo getcwd() consente di rilevare la...

Gestione delle eccezioni in Python

Possiamo definire un'eccezione come il costrutto di un linguaggio che, in presenza di un'anomalia, genera un messaggio di errore. Quando si verifica un problema durante il funzionamento di un processo, quest'ultimo viene arrestato e, nel caso in cui l'anomalia non venga gestita l'applicazione smetterà di funzionare dpo la sua segnalazione. Eccezioni predefinite Python presenta decine di eccezione predefinite e ognuna di...

Python programmazione ad oggetti: classi, oggetti e metodi

Python supporta diversi paradigmi per la programmazione compreso l'OOP (Object-Oriented Programming, programmazione orientata agli oggetti), un approccio il cui maggior vantaggio è quello di consentire la creazione di codice riutilizzabile. Tecnicamente l'OOP prevede di raggruppare sia le strutture dei dati e che le procedure che agiscono su di esse in una singola entità denominata classe. Le classi Una classe è in...

Python, programmazione ad oggetti ed ereditarietà

L'ereditarietà è un meccanismo grazie al quale una classe derivata (o child class) può acquisire le funzionalità definite in una classe base (o parent class) senza dover operare alcune modifica a carico di quest'ultima. L'utilizzo dell'ereditarietà presenta principalmente un vantaggio: consente di non dover riscrivere codice già digitato rendendolo riutilizzabile. Definire una classe derivata Per definire una classe derivata è...

Python programmazione ad oggetti: incapsulamento e polimorfismo

Il paradigma OOP non nasce soltanto per garantire una maggiore riutilizzabilità del codice, ma anche per favorire lo sviluppo collaborativo, le classi sono infatti per loro natura "condivisibili". A ben vedere si tratta comunque di concetti strettamente legati. Il fatto che l'approccio alla programmazione ad oggetti favorisca il lavoro in team non significa però che qualsiasi componente di un...

Python e MySQL: connessione e creazione del database

MySQL è un DBMS (Database Management System) di tipo relazionale, ciò significa che le informazioni archviate e gestite attraverso di esso sono in correlazione tra loro in base a delle proprietà. Per interagire con questa piattaforma è disponibile il linguaggio SQL (Structured Query Language) che è di tipo dichiarativo (o logico) in quanto caratterizzato dal fatto che le istruzioni...

Python e MySQL: creazione di una tabella e definizione dei campi

Un database relazionale gestito tramite MySQL è composto da una o più tabelle destinate ad ospitare dei dati, questi ultimi vengono ordinati in record (i pratica le righe delle tabelle) e rappresentano i valori di specifici associati ad unità di base, ognuna definita da un nome, dette campi (le colonne delle tabelle). In questa lezione scopriremo come Python possa essere...

Python e MySQL: inserimento e aggiornamento dei dati

Una volta creata una tabella con i relativi campi è possibile popolarla tramite l'inserimento dei dati. Quando si gestisce un database MySQL tale operazione può essere effettuata utilizzando il comando INSERT INTO seguito dal nome della tabella e da quelli dei campi coinvolti nell'inserimento separati da una virgola e delimitati da parentesi tonde. I valori da assegnare ai campi...

Python e MySQL: selezione dei record

Dopo aver inserito i dati all'interno di una tabella una delle operazioni più frequenti a carico dei database è quella relativa alla selezione dei dati che, in questo modo, possono essere estratti in toto o sulla base di determinati criteri per la stampa a video, le attività di analisi o altre elaborazioni. Il modulo di Python per l'interazione con MySQL...

Python e MySQL: cancellare record, tabelle e database

Tra le procedure effettuate con una certa frequenza nella gestione dei database vi sono anche quelle che prevedono la rimozione di record, tabelle e delle basi di dati stesse. I comandi SQL da utilizzare possono differire a seconda dell'elemento che si desidera eliminare ed è sempre utile ricordare che questo tipo di operazioni sono irreversibili, quindi se non si...