Le operazioni aritmetiche binarie hanno il livello di priorità convenzionale. Da notare che alcune di queste operazioni si applicano anche a certi tipi non numerici. A parte l'operatore di potenza, ci sono solo due livelli, uno per gli operatori di moltiplicazione ed uno per gli operatori di addizione:
L'operatore * (moltiplicazione) restituisce il prodotto dei
suoi argomenti. Gli argomenti devono essere o entrambi numeri o un
argomento deve essere un intero (semplice o long) e l'altro deve
essere una sequenza. Nel primo caso, i numeri vengono convertiti in
un tipo comune e quindi moltiplicati tra loro. Nell'altro caso, viene
eseguita una ripetizione della sequenza; un fattore di ripetizione
negativo produce una sequenza vuota.
Gli operatori / (divisione) e // (divisione con
arrotondamento) producono il quoziente dei propri argomenti. Gli
argomenti numerici vengono prima convertiti in un tipo comune.
Divisioni tra numeri interi semplici o long producono un intero dello
stesso tipo; il risultato è quello della divisione matematica con la
funzione `floor' applicata al risultato. Divisioni per zero sollevano
l'eccezione ZeroDivisionError.
L'operatore % (modulo) produce il resto della divisione tra il
primo argomento ed il secondo. Gli argomenti numerici vengono prima
convertiti in un tipo comune. Se il secondo operando è zero viene
sollevata l'eccezione ZeroDivisionError. Gli argomenti
possono essere numeri in virgola mobile, per esempio 3.14%0.7
è uguale a 0.34 (dato che 3.14 è uguale a
4*0.7 + 0.34.) L'operatore modulo produce sempre un risultato
con lo stesso segno del secondo operando (o zero); il valore assoluto
del risultato è rigorosamente più piccolo del valore assoluto del secondo operando5.1.
Gli operatori di divisione e modulo per gli interi sono legati dalla
seguente caratteristica: x == (x/y)*y + (x%y). La divisione
ed il modulo per gli interi sono legati anche dalla funzione built-in
divmod(): divmod(x, y) == (x/y, x%y). Queste
caratteristiche non si applicano ai numeri in virgola mobile;
caratteristiche simili si applicano approssimativamente dove
x/y viene sostituito da floor(x/y) o
floor(x/y) - 15.2.
L'operatore + (addizione) produce la somma dei propri
argomenti. Gli argomenti devono essere o entrambi numeri o entrambi
sequenze dello stesso tipo. Nel primo caso, i numeri vengono
convertiti in un tipo comune e quindi sommati tra loro. Nell'altro
caso invece, le sequenze vengono concatenate.
L'operatore - (sottrazione) produce la differenza tra i propri
argomenti. Gli argomenti numerici vengono prima convertiti in un tipo
comune.
abs(x%y) < abs(y) è matematicamente vero, per i
numeri in virgola mobile può non essere numericamente vero a causa
dell'arrotondamento. Per esempio, assumendo una piattaforma in
cui i numeri in virgola mobile di Python siano IEEE 754 in
precisione doppia, affinché -1e-100 % 1e100 abbia lo
stesso segno di 1e100, il risultato computato
-1e-100 + 1e100 che è numericamente esattamente uguale a
1e100. La funzione fmod() del modulo
math restuisce un risultato il cui segno corrisponde al
segno del primo argomento e perciò, in questo caso, restituisce
-1e-100. Quale approccio sia il più appropriato, dipende
dall'applicazione.
x è molto vicino ad un intero esatto multiplo di
y, è possibile che floor(x/y) sia più grande di
(x-x%y)/y a causa dell'arrotondamento. In questo caso,
Python restituisce quest'ultimo risultato per garantire che
divmod(x,y)[0] * y + x % y sia il più vicino possibile
ad x.