Sintassi Python - Una Guida Completa
Impara la sintassi Python da zero: indentazione, variabili, commenti, tipi di dati, cicli, condizionali e funzioni — con esempi eseguibili.
La sintassi Python è l'insieme di regole che definisce come deve essere scritto un programma Python affinché l'interprete possa comprenderlo ed eseguirlo. A differenza di linguaggi come C o Java, Python utilizza l'indentazione degli spazi bianchi al posto delle parentesi graffe per delimitare i blocchi di codice, e si legge quasi come un testo in inglese — il che è uno dei motivi principali per cui Python è un linguaggio popolare per i principianti.
Questo capitolo tratta i mattoni fondamentali della sintassi Python: indentazione, istruzioni, commenti, variabili, tipi di dati, operatori, flusso di controllo, cicli, funzioni e alcuni errori comuni.
Indentazione
In Python, l'indentazione non è una preferenza stilistica — fa parte della grammatica del linguaggio. L'interprete utilizza l'indentazione per determinare quali istruzioni appartengono allo stesso blocco. La convenzione standard (e quella applicata dalla maggior parte dei linter) è 4 spazi per livello.
Mescolare tab e spazi nello stesso file causa un IndentationError. Usa uno o l'altro in modo coerente — la guida allo stile Python (PEP 8) raccomanda gli spazi.
Errori di indentazione comuni
# IndentationError: expected an indented block
if True:
print("oops") # missing indentation# IndentationError: unexpected indent
x = 1
y = 2 # indented for no reasonIstruzioni e Continuazione di Riga
Ogni istruzione Python occupa normalmente una riga e non termina con un punto e virgola (anche se un punto e virgola è tecnicamente valido). Quando un'istruzione è troppo lunga, puoi spezzarla su più righe in due modi.
Continuazione implicita all'interno delle parentesi — qualsiasi (, [ o { aperto ti consente di continuare sulla riga successiva:
total = (
100
+ 200
+ 300
)
print(total) # 600Continuazione esplicita con una barra rovesciata (\):
result = 1 + 2 + 3 \
+ 4 + 5
print(result) # 15Puoi anche inserire più istruzioni su una sola riga con un punto e virgola, ma questo è sconsigliato:
x = 1; y = 2; print(x + y) # works, but avoid this styleCommenti
I commenti spiegano l'intento e vengono ignorati dall'interprete. Python ne ha due tipi.
Commenti su riga singola
Inizia un commento con #. Tutto ciò che segue # su quella riga viene ignorato:
# Calculate the area of a circle
radius = 5
area = 3.14159 * radius ** 2 # ** is the exponentiation operator
print(area)Commenti su più righe (docstring)
Python non ha una sintassi dedicata per i commenti a blocco. La convenzione è usare stringhe tra triple virgolette. Quando posizionate all'inizio di una funzione, classe o modulo, diventano docstring — accessibili in fase di esecuzione tramite help():
def greet(name):
"""Return a greeting for the given name.
Args:
name (str): The person's name.
"""
return f"Hello, {name}!"
print(greet("Alice")) # Hello, Alice!Variabili e Assegnazione
Una variabile viene creata nel momento in cui le si assegna un valore. Python è tipizzato dinamicamente, quindi non è necessario dichiarare un tipo:
x = 10 # integer
pi = 3.14 # float
name = "Alice" # string
active = True # booleanPuoi assegnare più variabili su una sola riga:
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3Oppure assegnare lo stesso valore a più variabili contemporaneamente:
x = y = z = 0
print(x, y, z) # 0 0 0I nomi delle variabili sono case-sensitive (age, Age e AGE sono tre variabili diverse). Per ulteriori informazioni sulle regole e le convenzioni di denominazione, consulta il capitolo Variabili Python.
Tipi di Dati
Ogni valore in Python ha un tipo. I tipi built-in più comuni sono:
| Tipo | Esempio | Note |
|---|---|---|
int | 42 | Intero a precisione arbitraria |
float | 3.14 | Virgola mobile a 64 bit |
str | "hello" | Sequenza immutabile di caratteri Unicode |
bool | True / False | Sottoclasse di int (True == 1, False == 0) |
list | [1, 2, 3] | Sequenza ordinata e mutabile |
tuple | (1, 2, 3) | Sequenza ordinata e immutabile |
dict | {"a": 1} | Mappa chiave-valore |
set | {1, 2, 3} | Raccolta non ordinata di valori unici |
NoneType | None | Rappresenta l'assenza di un valore |
Controlla il tipo di qualsiasi valore con type():
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hello")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>Per un approfondimento sui tipi, consulta il capitolo Tipi di Dati Python.
Operatori
Python supporta diverse categorie di operatori.
Operatori aritmetici
a, b = 10, 3
print(a + b) # 13 — addition
print(a - b) # 7 — subtraction
print(a * b) # 30 — multiplication
print(a / b) # 3.3333... — true division (always returns float)
print(a // b) # 3 — floor division
print(a % b) # 1 — modulo (remainder)
print(a ** b) # 1000 — exponentiationOperatori di confronto
Gli operatori di confronto restituiscono True o False:
print(5 == 5) # True
print(5 != 3) # True
print(5 > 3) # True
print(5 < 3) # False
print(5 >= 5) # True
print(5 <= 4) # FalseOperatori logici
print(True and False) # False
print(True or False) # True
print(not True) # FalsePer un riferimento completo con operatori di assegnazione, bit a bit e di identità, consulta il capitolo Operatori Python.
Stringhe
Le stringhe sono sequenze di caratteri Unicode. Possono essere racchiuse tra virgolette singole, doppie o triple:
s1 = "Hello, World!"
s2 = 'Hello, World!'
s3 = """This string
spans multiple lines."""f-string (letterali di stringa formattati)
Introdotte in Python 3.6, le f-string sono il modo consigliato per incorporare espressioni all'interno delle stringhe:
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
# My name is Alice and I am 30 years old.Operazioni comuni sulle stringhe
s = "python"
print(s.upper()) # PYTHON
print(s.capitalize()) # Python
print(len(s)) # 6
print(s[0]) # p (indexing)
print(s[1:4]) # yth (slicing)
print(s + " rocks") # python rocks (concatenation)Liste
Una lista è una raccolta ordinata e mutabile. Gli elementi possono essere di tipi misti:
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # apple
print(fruits[-1]) # cherry (negative index = from end)
fruits.append("date")
print(fruits) # ['apple', 'banana', 'cherry', 'date']
print(len(fruits)) # 4Flusso di Controllo
L'istruzione if / elif / else
Usa if, elif (else-if) e else per ramificare in base alle condizioni:
score = 75
if score >= 90:
grade = "A"
elif score >= 75:
grade = "B"
elif score >= 60:
grade = "C"
else:
grade = "F"
print(f"Grade: {grade}") # Grade: BUn errore comune da evitare: a differenza di molti linguaggi, Python non ha la sintassi switch/case prima di Python 3.10. Per condizioni multiple sulla stessa variabile, usa catene elif o una ricerca tramite dizionario. Python 3.10+ ha introdotto l'istruzione match come alternativa per il pattern matching strutturale.
Per un riferimento completo, consulta il capitolo Python If Else.
Il ciclo for
Il ciclo for itera su qualsiasi iterabile — una lista, una string, un range o un'altra sequenza:
Usa range() per iterare un numero specifico di volte:
for i in range(5):
print(i) # 0, 1, 2, 3, 4Usa enumerate() quando hai bisogno sia dell'indice che del valore:
colors = ["red", "green", "blue"]
for index, color in enumerate(colors):
print(index, color)
# 0 red
# 1 green
# 2 blueIl ciclo while
Il ciclo while si ripete finché la sua condizione è True:
Assicurati sempre che la condizione diventi eventualmente False, altrimenti si crea un ciclo infinito.
break, continue e else sui cicli
break— esce immediatamente dal ciclocontinue— salta il resto dell'iterazione corrente e passa alla successivaelsesu un ciclo — viene eseguito dopo che il ciclo termina normalmente (ovvero senza aver incontrato unbreak)
for n in range(10):
if n == 3:
continue # skip 3
if n == 6:
break # stop at 6
print(n)
# 0 1 2 4 5Funzioni
Le funzioni ti consentono di racchiudere la logica riutilizzabile sotto un nome. Definisci una funzione con def:
def add(a, b):
"""Return the sum of a and b."""
return a + b
result = add(3, 4)
print(result) # 7Valori predefiniti dei parametri
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("Alice") # Hello, Alice!
greet("Bob", "Hi") # Hi, Bob!Restituire valori multipli
Le funzioni Python possono restituire valori multipli come una tuple:
def min_max(numbers):
return min(numbers), max(numbers)
low, high = min_max([3, 1, 4, 1, 5, 9])
print(low, high) # 1 9Per maggiori dettagli, consulta il capitolo Funzioni Python.
Parole Chiave
Python riserva alcune parole per il linguaggio stesso. Non puoi usarle come nomi di variabili:
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yieldSe usi accidentalmente una parola chiave come nome di variabile, Python genera un SyntaxError:
# SyntaxError: invalid syntax
for = 10Moduli e Import
Il codice Python è organizzato in moduli (file .py). Importi il contenuto di un modulo con import:
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793Importa nomi specifici con from ... import:
from math import sqrt, pi
print(sqrt(25)) # 5.0Usa un alias per abbreviare i nomi dei moduli lunghi:
import datetime as dt
today = dt.date.today()
print(today) # e.g. 2026-06-19