5.4 L'operatore di potenza

L'operatore di potenza lega più saldamente di un operatore unario sulla propria sinistra e lega meno saldamente di un operatore unario sulla propria destra. La sintassi è:

power  ::=  primary ["**" u_expr]
Potete scaricare il file originale (in Inglese) come testo.

In una sequenza di operatori di potenza e unari senza parentesi, gli operatori vengono valutati da destra a sinistra (questo non forza l'ordine di valutazione per gli operandi).

L'operatore di potenza ha la stessa semantica della funzione built-in pow() invocata con due argomenti: causa l'elevazione a potenza dell'argomento di sinistra con l'argomento di destra. Gli argomenti numerici vengono prima convertiti in un tipo comune. Il tipo risultante è quello degli argomenti dopo la coercizione.

Con tipi di operandi misti, si applicano le regole di coercizione per operatori aritmetici binari. Per operandi int e long int, il risultato è dello stesso tipo degli operandi (dopo la coercizione) a meno che il secondo argomento non sia negativo, nel qual caso, tutti gli argomenti vengono convertiti in virgola mobile e viene fornito un risultato in virgola mobile. Per esempio, 10**2 restituisce 100, ma 10**-2 restituisce 0.01. (Quest'ultima caratteristica è stata aggiunta in Python 2.2. In Python 2.1 e precedenti, se entrambi gli argomenti erano interi ed il secondo era negativo, veniva sollevata un'eccezione).

L'elevazione di 0.0 ad una potenza negativa produce il risultato ZeroDivisionError. L'elevazione di un numero negativo ad una potenza frazionaria solleva un'eccezione ValueError.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.