Prontuario del linguaggio Python
Python è un linguaggio di programmazione per computer multipiattaforma. È un linguaggio a tipizzazione dinamica orientato agli oggetti, originariamente progettato per la scrittura di script automatizzati (shell). Con il continuo aggiornamento delle versioni e l’aggiunta di nuove funzionalità del linguaggio, viene sempre più utilizzato per lo sviluppo di progetti indipendenti su larga scala.
Generale
- Python distingue tra maiuscole e minuscole
- L’indicizzazione in Python inizia da 0
- Python utilizza lo spazio bianco (tabulazioni o spazi) per rientrare il codice invece di utilizzare le parentesi graffe.
Aiuto
| Home dell’aiuto | help() |
| Aiuto funzione | help(str.replace) |
| Aiuto modulo | help(re) |
Moduli (Librerie)
| Elenca contenuti modulo | dir(module1) |
| Carica modulo | import module1 * |
| Chiama funzione dal modulo | module1.func1() |
L’istruzione import crea un nuovo spazio dei nomi ed esegue tutte le istruzioni nel file .py associato a quello spazio dei nomi. Se desideri caricare il contenuto del modulo nello spazio dei nomi corrente, utilizza “from module1 import *”
Tipi Scalari
Controlla tipo di dato: type(variable)
Interi
int/long - Gli interi grandi vengono convertiti automaticamente in interi lunghi
Decimali (Float)
float - 64 bit, non esiste il tipo “double”
Booleani
bool - Vero o Falso
Stringhe
str - Predefinito Python 2.x: ASCII; Python 3: Unicode
- Le stringhe possono essere racchiuse tra virgolette singole/doppie/triple
- Una stringa è una sequenza di caratteri, quindi può essere trattata come qualsiasi altra sequenza
- I caratteri speciali possono essere completati iniziando con \ o r
str1 = r'this\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
NoneType(None) - Valore ’null’ di Python (esiste solo una 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) - Uso comune di None:
if variable is None :
Data e Ora
datetime - Modulo “datetime” integrato in Python, che 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 in stringa dt1.strftime(’%m/%d/%Y %H:%M’) Modifica valori campi 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 immutabile.
| Crea tupla | tup1=4,5,6 o 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
Una lista è una sequenza di elementi di lunghezza variabile e mutabile.
| Crea lista | list1 = [1, ‘a’, 3] o list1 = list(tup1) |
| Concatena liste | list1 + list2 o list1.extend(list2) |
| Aggiungi alla lista | list1.append(‘b’) |
| Inserisci in posizione specificata | list1.insert(posIdx, ‘b’) ** |
| Rimuovi elemento per indice | valueAtIdx = list1.pop(posIdx) |
| Rimuovi prima occorrenza di un valore | list1.remove(‘a’) |
| Controlla se il valore esiste nella lista | 3 in list1 => True *** |
| Ordina lista | list1.sort() |
| Ordina usando funzione fornita dall’utente | list1.sort(key = len) # Ordina per lunghezza |
Nota:
- L’indice di “inizio” è incluso, ma l’indice di “fine” no.
- inizio/fine possono essere omessi, per impostazione predefinita all’inizio/fine.
Slicing (Ritaglio)
I tipi di 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 funzione di mappatura | dict(zip(keyList, valueList)) |
| Ottieni elemento | dict1[‘key1’] |
| Cambia/Aggiungi elemento | dict1[‘key1’] = ’newValue’ |
| Ottieni valore, altrimenti predefinito | dict1.get(‘key1’, defaultValue) |
| Controlla se la chiave esiste | ‘key1’ in dict1 |
| Elimina elemento | del dict1[‘key1’] |
| Ottieni lista Chiavi | dict1.keys() |
| Ottieni lista Valori | dict1.values() |
| Aggiorna Valori | dict1.update(dict2) # valori di dict1 sostituiti da dict2 |
Insiemi (Sets)
Un insieme è una collezione non ordinata di elementi unici.
| Crea insieme | set([3, 6, 3]) o {3, 6, 3} |
| Controlla se set1 è un sottoinsieme di set2 | set1.issubset(set2) |
| Controlla se set2 è un sottoinsieme di set1 | set1.issuperset(set2) |
| Controlla se gli insiemi sono identici | 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, ..): -
Uso comune di “Le funzioni sono oggetti”:
def func1(ops = [str.strip, user_define_func, ..], ..): for function in ops: value = function(value) -
Valori di ritorno
- Se non c’è un’istruzione return alla fine di una funzione, non restituisce alcun valore.
- Restituisci più valori tramite un oggetto tupla
return (value1, value2) value1, value2 = func1(..) -
Funzioni anonime (Lambda)
lambda x : x * 2 # def func1(x) : return x * 2
Funzioni comunemente usate
-
Enumerate restituisce una tupla di sequenza (key, val), dove key è l’indice dell’elemento corrente.
for key, val in enumerate(collection): -
Sorted ordina tutti gli oggetti iterabili.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip impacchetta i corrispondenti elementi dagli oggetti in tuple e restituisce una lista di queste tuple.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed restituisce un iteratore invertito.
list(reversed(range(10)))
Controllo e Flusso
-
Operatori per le condizioni “if else”:
Controlla se due variabili sono lo stesso oggetto var1 is var2 Controlla se due variabili sono oggetti diversi var1 is not var2 Controlla se due variabili hanno lo stesso valore var1 == var2 -
Uso comune dell’operatore for:
for element in iterator : -
‘pass’ - Non fa nulla, generalmente usato come istruzione segnaposto.
-
Espressione ternaria
value = true-expr if condition else false-expr -
Nessuna istruzione switch/case, usa invece if/elif.
Orientamento agli Oggetti
-
‘object’ è la base per tutti i tipi Python
-
Qualsiasi cosa (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' è l'equivalente di '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') -
Strumento interattivo:
dir(variable1) # Elenca tutti i metodi disponibili sull'oggetto
Operazioni sulle Stringhe
Unisci liste/tuple usando un delimitatore
', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'Formatta stringa
string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')Dividi stringa
sep = '-'
stringList1 = string1.split(sep)Ottieni sottostringa
start = 1
string1[start:8]Riempi 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:
..- Solleva eccezioni manualmente
raise AssertionError # Asserzione fallita
raise SystemExit # Richiesta uscita programma
raise RuntimeError('Messaggio di errore: ..')Comprensione di Liste, Insiemi e Dizionari
Zucchero sintattico per rendere il codice più facile da leggere e da scrivere.
-
Comprensione di liste
Crea in modo conciso una nuova lista filtrando gli elementi di una collezione e trasformando gli elementi che superano il filtro in un’unica espressione.
Forma base
[expr for val in collection if condition]Scorciatoia:
result = [] for val in collection: if condition: result.append(expr)La condizione di filtro può essere omessa, lasciando solo l’espressione.
-
Comprensione di dizionari
{key-expr : value-expr for value in collection if condition} -
Comprensione di insiemi
Forma base: Uguale alla comprensione di liste, basta usare {} invece di []
-
Comprensione di liste annidate
Forma base:
[expr for val in collection for innerVal in val if condition]