Cheat sheet

Cheat sheet Python: sintassi, comandi e funzioni integrate in tabelle

Aggiornato: · Skillaria.Top

La sintassi di Python si basa sui rientri invece delle parentesi graffe: il blocco dopo i due punti è spostato di 4 spazi. Le basi sono variabili senza dichiarazione di tipo, condizioni if/elif/else, cicli for e while, funzioni def, e le funzioni integrate print, len, range, input, type più i metodi di stringhe, liste e dizionari.

Questo cheat sheet di Python raccoglie in un'unica pagina ciò che serve avere a portata di mano nei primi mesi: la sintassi, i cicli, le funzioni integrate, i metodi di stringhe, liste e dizionari e i comandi del terminale. Ogni tabella è un breve riferimento con esempi funzionanti che si possono incollare subito nella REPL.

Basi della sintassi Python

La caratteristica principale del linguaggio è che i blocchi sono definiti dai rientri, non dalle parentesi. Dopo una riga con i due punti (if, for, def, class) le righe successive vengono spostate di 4 spazi. Non si possono mescolare tabulazioni e spazi — otterrete un IndentationError.

CostruttoEsempioSpiegazione
Commento# testotutto dopo # fino a fine riga viene ignorato
Variabileage = 25il tipo non si dichiara, lo determina il valore
Assegnazione multiplaa, b = 1, 2spacchettamento; scambio di valori: a, b = b, a
Outputprint("Ciao", name)gli argomenti sono separati da uno spazio
Inputs = input("Nome: ")restituisce sempre una stringa
F-stringf"{name}: {price:.2f}"inserimento di espressioni e formato
Annotazione di tipocount: int = 0suggerimento per IDE e controlli, non verificato all'avvio
Blocco vuotopasssegnaposto dove la sintassi richiede un corpo
Importazionefrom math import sqrtcollegamento di un modulo o di un nome da esso

Tipi di dati

TipoLetteraleModificabile
int42, 1_000_000no
float3.14, 1e-3no
boolTrue, Falseno
str"testo", 'testo', """più righe"""no
list[1, 2, 3]sì
tuple(1, 2), (1,)no
dict{"a": 1}sì
set{1, 2}, vuoto — set()sì
NoneTypeNone—

Operatori

GruppoOperatoriEsempio → risultato
Aritmetica+ - * / // % **7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024
Confronto== != < > <= >=1 < x < 10 — catena di confronti
Logicaand or notx or "predefinito"
Appartenenzain, not in"a" in "abc" → True
Identitàis, is notx is None
Assegnazione+= -= *= /=, :=if (n := len(s)) > 10: ...

Condizioni e pattern matching

if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"

status = "adulto" if age >= 18 else "bambino"   # operatore ternario

match command:
    case "start":
        print("Avvio")
    case "stop" | "exit":
        print("Arresto")
    case _:
        print("Comando sconosciuto")

Sono considerati falsi False, None, 0, la stringa vuota e le collezioni vuote, quindi al posto di if len(items) > 0 si scrive semplicemente if items.

Cicli in Python: sintassi di for e while

Ciclo for

Sintassi del ciclo for in Python: for variabile in sequenza: seguito dal corpo con il rientro. Il ciclo scorre qualsiasi oggetto iterabile — stringa, lista, dizionario, file, range.

for i in range(5):              # 0 1 2 3 4
    print(i)

for i in range(10, 0, -2):      # 10 8 6 4 2
    print(i)

for i, fruit in enumerate(["mela", "pera"], start=1):
    print(i, fruit)

for name, score in zip(names, scores):
    print(name, score)

for key, value in prices.items():
    print(key, value)

Ciclo while

attempts = 3
while attempts > 0:
    password = input("Password: ")
    if password == "secret":
        print("Accesso eseguito")
        break
    attempts -= 1
else:
    print("Tentativi esauriti")   # eseguito se non c'è stato break
ComandoChe cosa fa
breakesce dal ciclo in anticipo
continuepassa all'iterazione successiva
else del cicloeseguito se il ciclo termina senza break
range(stop), range(start, stop, step)sequenza di numeri, stop non è incluso

Comprehension

squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100))   # espressione generatore

Funzioni

def greet(name: str, greeting: str = "Ciao") -> str:
    """Restituisce un saluto."""
    return f"{greeting}, {name}!"

def total(*args, **kwargs):
    return sum(args), kwargs

square = lambda x: x * x
print(greet("Anna"))                 # Ciao, Anna!
print(greet("Anna", greeting="Hei"))  # Hei, Anna!
ElementoSignificato
def f(a, b=1)parametro con valore predefinito
*argsun numero qualsiasi di argomenti posizionali (tupla)
**kwargsun numero qualsiasi di argomenti con nome (dizionario)
returnrestituisce un valore; senza di esso la funzione restituisce None
lambda x: ...breve funzione anonima in una sola espressione
global, nonlocalmodifica di una variabile da un ambito esterno

Non usate come valore predefinito un oggetto modificabile come def f(items=[]): la lista viene creata una sola volta e si accumula tra le chiamate. Corretto è items=None e dentro if items is None: items = [].

Funzioni integrate di Python

Le funzioni integrate di Python sono disponibili senza importazioni. Sono le funzioni principali che compaiono quasi in ogni script.

FunzioneChe cosa faEsempio → risultato
print()stampa i valoriprint(1, 2, sep="-") → 1-2
input()legge una stringa dalla tastieraint(input())
len()lunghezza di una collezione o di una stringalen("abc") → 3
type()tipo di un oggettotype(3.0) → <class 'float'>
isinstance()verifica del tipoisinstance(5, int) → True
int() float() str() bool()conversione di tipoint("42") → 42
list() tuple() set() dict()creazione di collezionilist("ab") → ['a', 'b']
range()intervallo di numerilist(range(3)) → [0, 1, 2]
enumerate()coppie (indice, elemento)list(enumerate("ab")) → [(0, 'a'), (1, 'b')]
zip()unisce sequenze a coppielist(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')]
sum() min() max()somma, minimo, massimomax([3, 7, 1]) → 7
abs() round()valore assoluto e arrotondamentoround(3.14159, 2) → 3.14
sorted()nuova lista ordinatasorted(words, key=len, reverse=True)
reversed()iteratore in ordine inversolist(reversed([1, 2])) → [2, 1]
map() filter()applica una funzione / filtralist(map(str, [1, 2])) → ['1', '2']
any() all()almeno uno / tutti veriall(x > 0 for x in nums)
open()apre un fileopen("a.txt", encoding="utf-8")
help() dir()guida e elenco degli attributihelp(str.split), dir(list)
id() hash()identificatore e hash di un oggettohash("a")

Il miglior riferimento sempre a portata di mano è la funzione help() nella REPL: help(dict) mostra tutti i metodi del dizionario con la descrizione, mentre dir(obj) elenca i nomi disponibili.

Metodi delle stringhe

Sintassi delle stringhe in Python: una stringa non è modificabile, ogni metodo restituisce una nuova stringa. Le fette funzionano come per le liste: s[1:4], s[::-1] — inversione.

MetodoEsempio → risultato
upper() lower()"Py".upper() → 'PY'
capitalize() title()"hello world".title() → 'Hello World'
strip() lstrip() rstrip()" ciao \n".strip() → 'ciao'
split(sep)"a,b,c".split(",") → ['a', 'b', 'c']
join(iterable)"-".join(["a", "b"]) → 'a-b'
replace(old, new)"gatto".replace("g", "r") → 'ratto'
find() index()"hello".find("l") → 2; se non c'è — -1 (con index — errore)
count()"banana".count("a") → 3
startswith() endswith()"file.py".endswith(".py") → True
isdigit() isalpha() isspace()"123".isdigit() → True
removeprefix() removesuffix()"test_a".removeprefix("test_") → 'a'
zfill() center() ljust()"7".zfill(3) → '007'
format()"{} + {}".format(1, 2) → '1 + 2'

Comandi delle liste Python

La lista è una collezione ordinata e modificabile. La maggior parte dei metodi modifica la lista sul posto e restituisce None, quindi a = a.sort() è un errore frequente.

OperazioneChe cosa faEsempio
append(x)aggiunge in fondoa.append(4)
extend(iter)aggiunge tutti gli elementia.extend([5, 6])
insert(i, x)inserisce per indicea.insert(0, "primo")
remove(x)rimuove la prima occorrenza del valorea.remove(3)
pop(i)rimuove e restituisce l'elemento (per default l'ultimo)last = a.pop()
clear()svuota la listaa.clear()
index(x)indice della prima occorrenzaa.index("b")
count(x)numero di occorrenzea.count(1)
sort()ordina sul postoa.sort(key=str.lower)
reverse()inverte sul postoa.reverse()
copy()copia superficialeb = a.copy()
del a[i]rimozione per indice o fettadel a[1:3]
Fettea[start:stop:step]a[-1] — l'ultimo, a[:3] — i primi tre

Comandi dei dizionari Python

OperazioneChe cosa faEsempio
d[key]valore per chiave, se la chiave manca — KeyErrord["name"]
get(key, default)valore oppure quello di riservad.get("age", 0)
d[key] = valueaggiunge o modificad["city"] = "Milano"
keys() values() items()chiavi, valori, coppiefor k, v in d.items():
update()unisce con un altro dizionariod.update({"a": 1})
d1 | d2nuovo dizionario unitomerged = defaults | user
pop(key, default)rimuove e restituisce il valored.pop("tmp", None)
popitem()rimuove l'ultima coppia aggiuntad.popitem()
setdefault(key, value)restituisce il valore; se la chiave manca, la cread.setdefault("tags", []).append("py")
key in dverifica della presenza della chiaveif "name" in d:
dict.fromkeys()dizionario dalle chiavi con un solo valoredict.fromkeys("abc", 0)
len(d), del d[key]dimensione e cancellazionedel d["old"]

Tuple e insiemi

OperazioneEsempio → risultato
Spacchettamento di una tuplax, y = (3, 4)
Aggiungere a un insiemes.add(5), rimuovere — s.discard(5)
Unione / intersezione{1, 2} | {2, 3} → {1, 2, 3}; {1, 2} & {2, 3} → {2}
Differenza{1, 2} - {2} → {1}
Eliminare i duplicati da una listalist(dict.fromkeys(items)) — mantenendo l'ordine

Eccezioni e file

try:
    number = int(input("Numero: "))
except ValueError as err:
    print("Non è un numero:", err)
else:
    print("Successo")
finally:
    print("Viene sempre eseguito")

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("riga\n")

with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.rstrip())
EccezioneQuando si verifica
SyntaxError, IndentationErrorerrore nella sintassi o nei rientri
NameErrornome non definito (refuso)
TypeErroroperazione con un tipo non adatto: "1" + 1
ValueErrortipo giusto, ma valore non valido: int("abc")
IndexError, KeyErrorindice o chiave inesistente
FileNotFoundErrorfile non trovato
ZeroDivisionErrordivisione per zero

Classi

from dataclasses import dataclass

class Dog:
    def __init__(self, name: str):
        self.name = name

    def bark(self) -> str:
        return f"{self.name}: Bau!"

@dataclass
class Point:
    x: float
    y: float

print(Dog("Fido").bark())   # Fido: Bau!
print(Point(1, 2))          # Point(x=1, y=2)

Moduli integrati di Python

La libreria standard viene installata insieme all'interprete — basta un import.

ModuloA cosa serveEsempio
mathmatematicamath.sqrt(16) → 4.0
randomnumeri casualirandom.randint(1, 6), random.choice(items)
datetimedata e oradatetime.date.today()
pathlibpercorsi e filePath("data").glob("*.csv")
os, syssistema, variabili d'ambiente, argomentios.environ.get("HOME"), sys.argv
jsonlettura e scrittura di JSONjson.loads(text), json.dumps(obj, ensure_ascii=False)
csvtabelle CSVcsv.DictReader(f)
collectionsCounter, defaultdict, dequeCounter("banana").most_common(1) → [('a', 3)]
itertoolscombinazioni e catene di iteratoriitertools.chain(a, b)
reespressioni regolarire.findall(r"\d+", s)
timepause e misura del tempotime.sleep(1), time.perf_counter()
asynciocodice asincronoasyncio.run(main())

In Python 3.15 è comparso l'import pigro (PEP 810): lazy import pandas as pd rinvia il caricamento del modulo fino al primo utilizzo, e lo script con dipendenze pesanti si avvia sensibilmente più in fretta.

Comandi Python nel terminale

Un gruppo a parte di ricerche riguarda i comandi per avviare l'interprete e installare le librerie. Su Windows al posto di python3 di solito si scrive python oppure py.

ComandoChe cosa fa
python3 --versionmostra la versione
python3apre la console interattiva REPL (uscita — exit())
python3 script.pyavvia un file
python3 -c "print(2 + 2)"esegue una sola riga
python3 -m venv .venvcrea un ambiente virtuale
source .venv/bin/activate / .venv\Scripts\activateattiva l'ambiente (Linux, macOS / Windows)
python3 -m pip install requestsinstalla un pacchetto
pip list, pip freeze > requirements.txtelenco dei pacchetti e salvataggio
pip install -r requirements.txtinstalla le dipendenze da un file
python3 -m http.server 8000semplice server web nella cartella corrente
uv init, uv add requests, uv run main.pyprogetto, dipendenza e avvio tramite il gestore uv

Errori frequenti dei principianti

  • Confronto con = — nella condizione serve ==; il singolo = è un'assegnazione.
  • Dimenticare i due punti dopo if, for, def dà SyntaxError.
  • Sommare stringa e numero: "Età: " + 25 è un errore, scrivete f"Età: {25}".
  • Modificare una lista durante il ciclo — scorrete una copia for x in a[:] o costruite una nuova lista.
  • input() restituisce una stringa — per l'aritmetica avvolgetelo in int() o float().

La sintassi di Python si regge su rientri, due punti e un piccolo insieme di costrutti: condizioni, cicli for e while, funzioni, classi. Aggiungete qualche decina di funzioni integrate e i metodi di stringhe, liste e dizionari, e coprirete gran parte dei compiti quotidiani. Conservate il cheat sheet e, quando le tabelle diventeranno familiari, passate ai moduli e all'asincronia; tutto questo è spiegato passo dopo passo, con esempi pratici, nel corso «Python 3.15: dal principiante al professionista».

Domande frequenti

Quanti spazi usare per il rientro in Python?

Secondo lo standard PEP 8 si usano 4 spazi per livello. L'importante è usarli in modo uniforme in tutto il blocco e senza mescolarli con le tabulazioni.

In cosa una lista si differenzia da una tupla?

La lista è modificabile: si può estendere e ordinare sul posto; la tupla non è modificabile, quindi può essere una chiave di dizionario e serve per insiemi di valori fissi.

Come vedere tutti i metodi di un oggetto direttamente in Python?

Richiamate dir(obj) per l'elenco dei nomi e help(obj) per la descrizione — per esempio help(str) mostra tutti i metodi delle stringhe.

Qual è la differenza tra sort() e sorted()?

Il metodo list.sort() ordina la lista stessa e restituisce None, mentre la funzione sorted() restituisce una nuova lista e accetta qualsiasi collezione iterabile.

Serve il punto e virgola alla fine della riga?

No. Il punto e virgola è ammesso per più istruzioni su una stessa riga, ma nel codice normale ogni istruzione va scritta su una riga nuova.