W3docs

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.

python— editable, runs on the server

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 reason

Istruzioni 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)   # 600

Continuazione esplicita con una barra rovesciata (\):

result = 1 + 2 + 3 \
         + 4 + 5
print(result)  # 15

Puoi 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 style

Commenti

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   # boolean

Puoi assegnare più variabili su una sola riga:

a, b, c = 1, 2, 3
print(a, b, c)   # 1 2 3

Oppure assegnare lo stesso valore a più variabili contemporaneamente:

x = y = z = 0
print(x, y, z)   # 0 0 0

I 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:

TipoEsempioNote
int42Intero a precisione arbitraria
float3.14Virgola mobile a 64 bit
str"hello"Sequenza immutabile di caratteri Unicode
boolTrue / FalseSottoclasse 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
NoneTypeNoneRappresenta 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 — exponentiation

Operatori 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)    # False

Operatori logici

print(True and False)   # False
print(True or False)    # True
print(not True)         # False

Per 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))       # 4

Flusso 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: B

Un 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:

python— editable, runs on the server

Usa range() per iterare un numero specifico di volte:

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

Usa 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 blue

Il ciclo while

Il ciclo while si ripete finché la sua condizione è True:

python— editable, runs on the server

Assicurati sempre che la condizione diventi eventualmente False, altrimenti si crea un ciclo infinito.

break, continue e else sui cicli

  • break — esce immediatamente dal ciclo
  • continue — salta il resto dell'iterazione corrente e passa alla successiva
  • else su un ciclo — viene eseguito dopo che il ciclo termina normalmente (ovvero senza aver incontrato un break)
for n in range(10):
    if n == 3:
        continue   # skip 3
    if n == 6:
        break      # stop at 6
    print(n)
# 0 1 2 4 5

Funzioni

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)   # 7

Valori 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 9

Per 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       yield

Se usi accidentalmente una parola chiave come nome di variabile, Python genera un SyntaxError:

# SyntaxError: invalid syntax
for = 10

Moduli 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.141592653589793

Importa nomi specifici con from ... import:

from math import sqrt, pi
print(sqrt(25))   # 5.0

Usa un alias per abbreviare i nomi dei moduli lunghi:

import datetime as dt
today = dt.date.today()
print(today)   # e.g. 2026-06-19

Pratica

Pratica
What are some general rules to follow when indenting code in Python as mentioned on w3docs.com?
What are some general rules to follow when indenting code in Python as mentioned on w3docs.com?
Was this page helpful?