Esistono quattro tipi numerici distinti; interi semplici, interi long, numeri in virgola mobile e numeri complessi. In aggiunta, i Booleani vengono considerati un sotto tipo di interi semplici. Gli interi semplici (chiamati anche solo interi, interi) vengono implementati usando long in C, che dà loro come minimo 32 bit di precisione. Gli interi long hanno una precisione illimitata. I numeri in virgola mobile vengono implementati usando double in C. Tutti i puntatori alla loro precisione vengono disattivati fino a che non è nota la macchina su cui si sta lavorando.
I numeri complessi hanno una parte reale ed una parte immaginaria,
implementate usando double in C. Per estrarre queste
parti da un numero complesso z, si usa z.real
e z.imag
.
I numeri vengono creati da costanti numeriche o come il risultato di funzioni ed operatori built-in. Costanti numeriche intere semplici (inclusi numeri esadecimali e ottali) restituiscono interi semplici fino a che il valore che denotano è troppo grande per essere rappresentato come tale, in quel caso viene restituito un intero long. Le costanti numeriche intere con il suffisso "L" o "l" restituiscono interi long ("L" viene preferito perché "1l"sembra troppo simile al numero undici!). Le costanti numeriche contenenti un punto decimale o un segno esponenziale restituiscono numeri in virgola mobile. L'aggiunta di "j" o "J" ad una costatnte numerica restituisce un numero complesso con la parte reale uguale a zero. Una costante numerica complessa è la somma di una parte reale ed una parte immaginaria.
Python supporta pienamente gli aritmetici misti: quando un operatore binario aritmetico ha operandi di differente tipo numerico, l'operando con il tipo ``narrower'' (NdT:stretto) viene allargato a quello dell'altro, dove l'intero semplice è più stretto di quello intero long, a sua volta più stretto di quello in virgola mobile, a sua volta ancora più stretto di quello complesso. Il confronto tra numeri di tipi misti usa le stesse regole. 2.6I costruttori int(), long(), float() e complex() possono essere usati per produrre numeri di un tipo specifico.
Tutti i tipi numerici (eccetto i complessi) supportano le seguenti operazioni, ricapitolate per priorità ascendente (le operazioni nello stesso box hanno la stessa priorità; tutte le operazioni numeriche hanno una priorità più alta rispetto a quelle di confronto):
Operazione | Risultato | Note |
---|---|---|
x + y |
somma di x e y | |
x - y |
sottrazione di y a x | |
x * y |
moltiplicazione di x per y | |
x / y |
quoziente di x per y | (1) |
x % y |
resto di x / y |
(4) |
-x |
x negativizzato | |
+x |
x immutato | |
abs(x) |
valore assoluto della magnitudo di x | |
int(x) |
x conversione in intero | (2) |
long(x) |
x conversione in intero long | (2) |
float(x) |
x conversione in virgola mobile | |
complex(re,im) |
un numero complesso con una parte reale re ed una parte immaginaria im. Il valore predefinito di im è zero. | |
c.conjugate() |
coniugazione del numero complesso c | |
divmod(x, y) |
la coppia (x / y, x % y) |
(3)(4) |
pow(x, y) |
x elevato alla potenza y | |
x ** y |
x elevato alla potenza y |
Note:
[1, 2]
viene
considerata uguale a [1.0, 2.0]
e similmente per le tuple.