Cheat sheet del linguaggio Python
Python è un linguaggio di programmazione per computer multipiattaforma. È un linguaggio orientato agli oggetti a tipizzazione dinamica, originariamente progettato per la scrittura di script di automazione (shell). Con il costante aggiornamento delle versioni e l’aggiunta di nuove funzionalità del linguaggio, viene sempre più utilizzato per lo sviluppo di progetti indipendenti di grandi dimensioni.
Generale
- Python è case-sensitive (distingue tra maiuscole e minuscole)
- L’indicizzazione in Python inizia da 0
- Python utilizza gli spazi bianchi (tabulazioni o spazi) per rientrare il codice invece di utilizzare le parentesi graffe.
Aiuto (Help)
| Pagina iniziale dell’aiuto | help() |
| Aiuto sulle funzioni | help(str.replace) |
| Aiuto sui moduli | help(re) |
Moduli (Librerie)
| Elenca contenuto del modulo | dir(module1) |
| Carica modulo | import module1 * |
| Chiama funzione da modulo | module1.func1() |
L’istruzione import crea un nuovo spazio dei nomi ed esegue tutte le istruzioni nel file .py associato all’interno di quello spazio dei nomi. Se si desidera caricare il contenuto del modulo nello spazio dei nomi corrente, utilizzare “from module1 import *”
Tipi scalari
Verifica il tipo di dati: type(variable)
Interi (Integers)
int/long - I numeri interi grandi vengono convertiti automaticamente in interi lunghi (in Python 3, esiste solo int che gestisce qualsiasi dimensione).
Float (Numeri a virgola mobile)
float - 64 bit, non esiste un tipo “double”.
Booleani (Booleans)
bool - Vero (True) o Falso (False).
Stringhe (Strings)
str - Python 2.x predefinito: ASCII; Python 3: Unicode.
- Le stringhe possono essere racchiuse tra virgolette singole, doppie o triple.
- Una stringa è una sequenza di caratteri, quindi può essere trattata come qualsiasi altra sequenza.
- I caratteri speciali possono essere rappresentati precedendoli con \ o r (stringhe grezze / raw strings).
str1 = r'questo\f?ff' - La formattazione delle stringhe può essere ottenuta in diversi modi.
template = '%.2f %s haha $%d' str1 = template % (4.88, 'hola', 2)
str(), bool(), int() e float() sono anche funzioni di conversione esplicita del tipo.
Valore nullo (Null)
NoneType(None) - Valore ’null’ di Python (esiste una sola istanza dell’oggetto None).
- None non è una parola chiave riservata, ma l’unica istanza di “NoneType”.
- None è un valore predefinito comune per i parametri opzionali delle funzioni:
def func1(a, b, c = None) - Utilizzo comune di None:
if variable is None :
Data e ora (Datetime)
datetime - Il modulo integrato “datetime” di Python fornisce i tipi “datetime”, “date”, “time”, ecc.
- “datetime” combina le informazioni memorizzate in “date” e “time”.
Crea datetime da stringa dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’) Ottieni oggetto “date” dt1.date() Ottieni oggetto “time” dt1.time() Formatta datetime come stringa dt1.strftime(’%m/%d/%Y %H:%M’) Modifica valore del campo dt2 = dt1.replace(minute = 0, second=30) Ottieni differenza diff = dt1 - dt2 # diff è un oggetto ‘datetime.timedelta’
Strutture dati
Tuple
Una tupla è una sequenza di lunghezza fissa e non modificabile.
| Crea tupla | tup1=4,5,6 or tup1 = (6,7,8) |
| Crea tupla annidata | tup1 = (4,5,6), (7,8) |
| Converti sequenza o iteratore in tupla | tuple([1, 0, 2]) |
| Concatena tuple | tup1 + tup2 |
| Scompatta tupla | a, b, c = tup1 |
| Scambia variabili | b, a = a, b |
Liste (Lists)
Una lista è una sequenza di lunghezza variabile e modificabile.
| Crea lista | list1 = [1, ‘a’, 3] or list1 = list(tup1) |
| Concatena liste | list1 + list2 or list1.extend(list2) |
| Aggiungi alla lista | list1.append(‘b’) |
| Inserisci in posizione specifica | list1.insert(posIdx, ‘b’) |
| Rimuovi tramite indice | valueAtIdx = list1.pop(posIdx) |
| Rimuovi primo valore corrispondente | list1.remove(‘a’) |
| Verifica se valore esiste | 3 in list1 => True |
| Ordina lista | list1.sort() |
| Ordina con funzione personalizzata | list1.sort(key = len) # ordina per lunghezza |
Nota:
- L’indice di “inizio” (start) è incluso, l’indice di “fine” (stop) è escluso.
- start/stop possono essere omessi, il valore predefinito è l’inizio/fine.
Slicing (Ritaglio)
I tipi sequenza includono ‘str’, ‘array’, ’tuple’, ’list’ ecc.
list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]Dizionari (Hash)
| Crea dizionario | dict1 ={‘key1’ :‘value1’, 2 :[3, 2]} |
| Costruisci dizionario tramite zip | dict(zip(keyList, valueList)) |
| Ottieni elemento | dict1[‘key1’] |
| Cambia/Aggiungi elemento | dict1[‘key1’] = ’newValue’ |
| Ottieni valore, altrimenti predefinito | dict1.get(‘key1’, defaultValue) |
| Verifica se chiave esiste | ‘key1’ in dict1 |
| Elimina elemento | del dict1[‘key1’] |
| Ottieni lista delle chiavi | dict1.keys() |
| Ottieni lista dei valori | dict1.values() |
| Aggiorna valori | dict1.update(dict2) # i valori di dict1 vengono sostituiti da dict2 |
Insiemi (Sets)
Un insieme è una raccolta non ordinata di elementi unici.
| Crea insieme | set([3, 6, 3]) or {3, 6, 3} |
| Verifica se è un sottoinsieme | set1.issubset(set2) |
| Verifica se è un sovrainsieme | set1.issuperset(set2) |
| Verifica uguaglianza | set1 == set2 |
| Unione (or) | set1 |
| Intersezione (and) | set1 & set2 |
| Differenza | set1 - set2 |
| Differenza simmetrica (xor) | set1 ^ set2 |
Funzioni
-
Forma base:
def func1(posArg1, keywordArg1 = 1, ..): -
Utilizzo comune di “Le funzioni sono oggetti”:
def func1(ops = [str.strip, user_define_func, ..], ..): for funzione in ops: value = funzione(value) -
Valori di ritorno:
- Se non c’è l’istruzione return, non viene restituito alcun valore (None).
- Restituire più valori tramite una tupla.
return (value1, value2) value1, value2 = func1(..) -
Funzioni anonime (Lambda):
lambda x : x * 2 # def func1(x) : return x * 2
Funzioni comuni
-
Enumerate: restituisce una sequenza di tuple (indice, valore), dove l’indice è la posizione corrente.
for key, val in enumerate(collection): -
Sorted: ordina qualsiasi oggetto iterabile.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: raggruppa gli elementi corrispondenti degli oggetti in tuple e restituisce una lista di tali tuple.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: restituisce un iteratore invertito.
list(reversed(range(10)))
Controllo del flusso
-
Operatori per le condizioni “if else”:
Verifica se due variabili sono lo stesso oggetto var1 is var2 Verifica se due variabili sono oggetti diversi var1 is not var2 Verifica se due variabili hanno lo stesso valore var1 == var2 -
Utilizzo comune dell’operatore for:
for elemento in iterator : -
‘pass’: non esegue alcuna operazione, generalmente usato come segnaposto.
-
Espressione ternaria:
value = true-expr if condition else false-expr -
Non esistono istruzioni switch/case; utilizzare if/elif.
Orientamento agli oggetti (OOP)
-
‘object’ è la base per tutti i tipi Python.
-
Tutto (numeri, stringhe, funzioni, classi, moduli, ecc.) è un oggetto, e ogni oggetto ha un ’type’. Le variabili oggetto sono puntatori alla loro posizione in memoria.
-
Forma base di un oggetto:
class MyObject(object): # 'self' equivale a 'this' in Java/C++ def __init__(self, name): self.name = name def memberFunc1(self, arg1): .. @staticmethod def classFunc2(arg1): .. obj1 = MyObject('name1') obj1.memberFunc1('a') MyObject.classFunc2('b') -
Strumenti interattivi:
dir(variable1) # Elenca tutti i metodi disponibili sull'oggetto
Operazioni sulle stringhe
Unire lista/tupla con un separatore:
', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'Formattare una stringa:
string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')Dividere una stringa:
sep = '-'
stringList1 = string1.split(sep)Ottenere sottostringa (slice):
start = 1
string1[start:8]Riempire stringa con zeri:
month = '5'
month.zfill(2) => '05'
month = '12'
month.zfill(2) => '12'Gestione delle eccezioni
- Forma base:
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- Generare un’eccezione manualmente:
raise AssertionError # Asserzione fallita
raise SystemExit # Richiesta uscita programma
raise RuntimeError('Messaggio di errore :..')List, Set e Dict Comprehension
Zucchero sintattico per rendere il codice più facile da leggere e scrivere.
-
List Comprehension:
Un modo conciso per formare una nuova lista filtrando gli elementi di una collezione e trasformando quelli che superano il filtro.
Forma base:
[expr for val in collection if condition]Scorciatoia per:
result = [] for val in collection: if condition: result.append(expr) -
Dictionary Comprehension:
{key-expr : value-expr for value in collection if condition} -
Set Comprehension: Come la list comprehension, ma utilizzando {} invece di [].
-
Nested List Comprehension (annidata):
Forma base:
[expr for val in collection for innerVal in val if condition]