Definizione di Espressione

Un’espressione in Python può essere vista come una combinazione di valori, variabili, operatori e chiamate a funzioni che vengono interpretati per produrre un risultato. Ad esempio:

print(3 + 4)

Questa è un’espressione che somma due numeri e restituisce il valore 7.

Componenti di un’Espressione

Un’espressione può includere:

  • Valori costanti: Numeri, stringhe, booleani, ecc. (e.g., 42, "hello", True)
  • Variabili: Identificatori che puntano a valori (e.g., x, nome)
  • Operatori: Simboli che eseguono operazioni sui valori (e.g., +, *, and, is)
  • Chiamate a funzioni: Funzioni incorporate o definite dall’utente (e.g., len(lista), max(a, b))

Tipi di Espressioni

Le espressioni in Python possono variare in complessità. Alcune delle principali categorie includono:

  • Espressioni letterali: Quando un valore è rappresentato direttamente (e.g., 42, 'Python').
  • Espressioni aritmetiche: Combinano numeri e operatori aritmetici (e.g., 3 + 4 * 2).
  • Espressioni logiche: Usano operatori logici come and, or e not (e.g., True and False).
  • Espressioni di confronto: Confrontano valori usando operatori come >, <, == (e.g., 5 > 3).
  • Espressioni di assegnazione: Assegnano valori a variabili (e.g., x = 10).
  • Espressioni di chiamata: Chiamano funzioni o metodi (e.g., len("Python")).

La Valutazione delle Espressioni in Python

Python valuta le espressioni seguendo regole ben definite che variano a seconda del tipo di espressione e della presenza di operatori. La valutazione delle espressioni avviene da sinistra a destra, rispettando la precedenza degli operatori e le parentesi per forzare un ordine specifico.

Precedenza e Associatività degli Operatori

Gli operatori in Python hanno una precedenza, che determina l’ordine in cui le operazioni vengono eseguite. Gli operatori con precedenza maggiore vengono valutati per primi. Se più operatori hanno la stessa precedenza, si considera l’associatività per determinare l’ordine di valutazione (ad esempio, la maggior parte degli operatori sono associativi a sinistra).

OperatoreDescrizionePrecedenza
**EsponenziazioneAlto
*, /, %Moltiplicazione, divisioneMedio
+, -Addizione, sottrazioneBasso
==, !=, >ConfrontoPiù basso
and, orOperatori logiciMolto basso

Esempio di Valutazione con Precedenza:

print(3 + 4 * 2 ** 2)
  • L’operatore con la precedenza più alta è **, quindi 2 ** 2 viene valutato prima, ottenendo 4.
  • Successivamente, l’operatore * viene valutato, quindi 4 * 416.
  • Infine, 3 + 16 restituisce il risultato finale, 19.

Uso delle Parentesi

Le parentesi possono essere utilizzate per sovrascrivere la precedenza degli operatori e forzare un ordine specifico nella valutazione delle espressioni. Ad esempio:

print((3 + 4) * 2)

In questo caso, l’espressione all’interno delle parentesi viene valutata per prima, ottenendo 7, e poi viene moltiplicata per 2, restituendo 14.