Skip to content

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

  1. Enumerate restituisce una tupla di sequenza (key, val), dove key è l’indice dell’elemento corrente.

    for key, val in enumerate(collection):
  2. Sorted ordina tutti gli oggetti iterabili.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip impacchetta i corrispondenti elementi dagli oggetti in tuple e restituisce una lista di queste tuple.

    zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..]
  4. Reversed restituisce un iteratore invertito.

    list(reversed(range(10)))

Controllo e Flusso

  1. 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
  2. Uso comune dell’operatore for:

    for element in iterator :
  3. ‘pass’ - Non fa nulla, generalmente usato come istruzione segnaposto.

  4. Espressione ternaria

    value = true-expr if condition else false-expr
  5. Nessuna istruzione switch/case, usa invece if/elif.

Orientamento agli Oggetti

  1. ‘object’ è la base per tutti i tipi Python

  2. 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.

  3. 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')
  4. 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

  1. Forma base
try:
    ..
except ValueError as e:
    print e
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. 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.

  1. 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.

  2. Comprensione di dizionari

    {key-expr : value-expr for value in collection if condition}
  3. Comprensione di insiemi

    Forma base: Uguale alla comprensione di liste, basta usare {} invece di []

  4. Comprensione di liste annidate

    Forma base:

    [expr for val in collection for innerVal in val if condition]