En Python, comme dans la plupart des langages de programmation, les expressions sont classées en fonction de leur type :
- Les expressions, comme $1 + 2$, dont la valeur est un nombre entier, comme $3$, sont de type int (integer : nombre entier),
- Celles comme $1.5 + 3,14$, dont la valeur est un nombre à virgule, sont de type float, (floating point number : nombre en notation scientifique),
- Celles comme $0 < 1$, dont la valeur est un booléen, False (faux) ou True (vrai), sont de type boolean, dans les langages de programmation, on écrit en général les booléens False et True et non 0 et 1 pour éviter les confusions avec les nombres,
- Celles, comme $\text{"Bon" + "jour"}$, dont la valeur est une chaîne de caractères, comme $\text{"Bonjour"}$, sont de type $\text{str}$.
Une valeur de type int est exprimée sur un nombre de bits arbitraires.
Les valeurs de type float sont exprimées sur $\text{64 bits}$ : $\text{1 bit}$ de signe, $\text{11 bits}$ d’exposant, $\text{52 bits}$ de mantisse.
Un booléen est simplement exprimé avec un bit : True est une autre notation pour le bit $1$, et False une autre notation pour le bit $0$.
Dans une valeur de type str, chaque caractère est exprimé en Unicode.
Donner un type à chaque expression a plusieurs avantages : d’une part, cela permet de préciser la manière dont les données doivent être exprimées, puisque le nombre entier $1$ et le nombre à virgule $1,0$ sont exprimés d’une manière très différente.
D’autre part, les types permettent d’éviter un certain nombre d’erreurs : par exemple l’expression $\text{"Bonjour" + 1}$ contient une erreur puisqu'il est impossible d’ajouter une chaîne de caractères et un nombre entier.
On peut changer le type d’une expression en la préfixant par le nom d’un type, par exemple, si la valeur de l’expression e est le nombre entier $64$, alors celle de l’expression str(e) est la chaîne de caractères $"64"$. Si la valeur de l’expression e est le nombre à virgule $3,14$, alors celle de l’expression int(e) est le nombre entier $3$.