Pillole di Python

Decoratori e Metodi

Quando definiamo un metodo all'interno di una classe e poi creiamo un istanza della classe al metodo viene passata come parametro la classe stessa. Vediamo con il seguente esempio che se poi lanciamo il metodo2 l'interprete ci ritorna un errore perchè si aspetta un parametro. Possiamo ovviare passando il parametro self al metodo oppure inserendo il decoratore staticmethod come possiamo vedere nelle immagini sottostanti.

Built-in Function

Lista delle funzioni built-in messe a disposizione da Python.

Operare con i Web Service - SOAP

Web service : servizio web per scambio di informazioni.
Web Services Description Language : interfaccia Xml che descrive le funzionalità dei Web Service.
Sono di 2 tipi :
SOAP : Simple Object Access Protocol : Xml
RESTFUL : REpresentational State Transfer : Xml, Json,Text
Qui prendiamo in considerazione 2 client per SOAP che ci permettono di operare con un web service.
Nel programma basta inserire:

Leggere Registri Windows

Driver per collegare SQL Server

Verificare se i driver odbc per SQL Server sono stati installati

Python e MongoDB

Creare un collegamento con MongoDB sia con Python che con Django

MultiProcessing

Programma multiprocessing - lancio più processi per numero core presenti sulla macchina


ed ancora

Regolare il livello dei messaggi warning

Convertire dati da testo/byte

Per convertire un testo stringa in byte:
dati_byte = text.encode('utf-8')
dati_stringa = dati_byte.decode('utf-8')

Python Class

Inheritance


altro esempio con modifica metodo __str__

Super

Nella Inheritance e soprattutto in caso di multi-inheritance si può utilizzare il comando Super per indicare quale funzione utilizzare.
Come si può osservare il super si può utilizzare con __init__ ma anche con gli altri metodi.

con il seguente risultato:
100
Albert ------ Einstein

Librerie Os e Sys

La libreria os ci permette di interfacciarci con il sistema operativo mentre la sys fornisce strumenti per comunicare con l'interprete di python.
Current working directory
os.getcwd

Command-line arguments
sys.argv

Shell variables
os.environ
Standard streams
sys.stdin , stdout , and stderr

Funzioni built-in range ed enumerate

La funzione range ci restituisce una lista di valori iterabili inserenzo come parametri il valore di partenza il valore di arrivo ed il valore di step come possiamo vedere nell'immagine sottostante.


Con enumerate possiamo iterare un oggetto iterabile ed ottenere un sequenza numerica che possiamo utilizzare come indice in altri oggetti iterabili.

Iteratori

Un oggetto è iterabile se ha il metodo __iter__ mentre è iteratore se ha il metodo __next__ .


Un oggetto è iterabile se applicando il metodo __next__ si ottiene un elemento nuovo fino a StopIteration.


Possiamo far diventare un oggetto iterabile applicando il metodo __iter__ e poi con il metodo __next__ possiamo iterare su di esso.

Metodi speciali __new__ e __call__

Vediamo che una funzione ha il metodo __call__ mentre la class oggetto ha il metodo __new__ ma l'istanza non è callable.


applicando il metodo __call__ alla class poi l'istanza è callable.

Indicizzazione e slicing

Con il metodo __getitem__() possiamo creare l'indicizzazione e lo slicing di un oggetto.

Con il metodo __setitem__() possiamo invece modificare un oggetto.

Le enumerazioni

Nelle ultime versioni di Python è stato definito un nuovo contenitore, le enumerazioni di cui vediamo 2 diversi modi di creazione ed utilizzo.

Funzioni filter, map e zip

Ora vediamo alcune funzioni built-in di Python che sono filter per filtrare il contenuto di un oggetto iterabile ottenendo una lista filtrata in base alle conzioni inserite in una funzione inserita in input alla funzione filter. La funzione map invece ci ritorna una lista con l'elenco che indica se la condizione è True o False. Infine la zip ritorna una lista con i valori uniti dalla iterazione degli oggetti in input.

Funzioni -- Passaggio parametri

Ci sono diversi metodi con i quali possiamo passare i parametri alle funzioni ed ora li esaminiamo in dettaglio. Partiamo dal Matching parametri per posizione da sx a dx, parametri per nome, parametri con valori di default.


Ora vediamo altri metodi come Matching con varargs, se presente *varargs tutti i paramtri inseriti vengono passati alla funzione in una tupla.

Proseguiamo ora con il passaggio parametri con spacchettamento e Kwargs in cui i parametri inseriti vengono trasformati dalla funzione in un dictionary.

Funzioni anonime -- Lambda

lambda p1, p2,., pN: espr dove p1,p2 sono i parametri inseriti in input ed espr è l'output.

List Comprehension


Exception

Python ci fornisce una serie di exception ma possiamo crearne delle custom ed oltre a gestire errori improvvisi possiamo anche creare con il comando raise delle exception per gestirle in modo autonomo.


Vediamo ora un esempio di una exception definita appositamente per gestire una exception.