Pourquoi les types comptent
Un type est juste une catégorie qui dit à Python comment une valeur doit se comporter. Additionner deux entiers, c'est de l'arithmétique ; additionner deux chaînes, c'est les coller ; additionner une chaîne à un entier, c'est une erreur. Le type d'une valeur détermine quelles opérations ont un sens sur elle.
Python a un ensemble restreint et accueillant de types intégrés. Tu en utiliseras quatre — int, float, str, bool — dans presque tous les programmes que tu écriras. Les autres apparaissent quand tu commences à organiser les données en collections.
Nombres : int et float
Deux sortes de nombres, et Python choisit lequel tu obtiens selon la façon dont tu l'as écrit :
Pas de virgule décimale ? Tu obtiens un int. Une virgule décimale ? Tu obtiens un float. L'arithmétique les mélange librement — toute opération impliquant un float produit un float :
Les entiers en Python peuvent être aussi grands que ta mémoire le permet — pas de dépassement, pas de plafond fixe à 32 ou 64 bits. Tu peux calculer 2 ** 1000 et Python te rendra chaque chiffre.
Les flottants suivent les règles habituelles de l'IEEE 754, ce qui veut dire quelques surprises classiques :
Ça affiche 0.30000000000000004, pas 0.3. Ce n'est pas un bug Python — c'est ainsi que fonctionne la virgule flottante binaire dans chaque langage. Quand tu as besoin de décimaux exacts (l'argent, par exemple), utilise plutôt le module decimal. Pour tout le reste, un arrondi à l'affichage suffit généralement.
Chaînes : str
Les chaînes sont des séquences de caractères. Enveloppe-les dans des guillemets simples ou doubles — Python s'en moque, tant que le guillemet d'ouverture et celui de fermeture correspondent :
Les chaînes à triple guillemets (""" ... """) s'étendent sur plusieurs lignes :
Les chaînes ont une énorme API que tu apprendras au fil du temps — le découpage, des méthodes comme .upper(), .split(), .replace() et le formatage f-string qui te donne f"Hello, {name}". Il y a une page dédiée aux chaînes juste après.
Booléens : bool
Deux valeurs, écrites exactement comme indiqué — True et False, majuscule au début. Les comparaisons produisent des booléens :
Sous le capot, True et False sont littéralement 1 et 0, ce qui veut dire que tu peux additionner des booléens si tu as besoin de compter combien de conditions sont vraies :
None : l'absence de valeur
None est la façon de Python de dire « pas de valeur ». Les fonctions qui ne retournent rien explicitement retournent None. Tu l'utiliseras aussi comme espace réservé :
La convention, c'est de tester avec is None et is not None — pas == None. is vérifie l'identité, ce qui correspond à ce que tu veux vraiment dire ici.
Listes, tuples, ensembles, dictionnaires
Voici les quatre types de collections intégrés. Chacun a sa propre page en détail, mais voici le croquis rapide pour que tu les reconnaisses :
Règles empiriques :
- Liste : une séquence que tu t'attends à voir changer. Ajouter, supprimer, trier — tout va bien.
- Tuple : une séquence que tu veux protéger du changement. Souvent utilisé pour des enregistrements à forme fixe comme les coordonnées
(x, y). - Set : un sac d'éléments uniques, quand les doublons seraient un bug.
- Dict : des recherches par clé. La structure de forme JSON.
Convertir entre types
Python ne convertit pas les types pour toi automatiquement quand ce serait risqué. Transformer un entier en chaîne, ou une chaîne en nombre, c'est quelque chose que tu demandes :
Si une conversion n'a pas de sens — int("hello"), par exemple — Python lève ValueError et te dit ce que tu lui as donné. Erreur, expliquée, on corrige et on passe à la suite.
Vérifier un type
Deux outils à connaître :
type() est parfait pour un coup d'œil rapide dans le REPL. isinstance() est ce que tu utilises dans le vrai code parce qu'il s'entend bien avec l'héritage et peut vérifier plusieurs types à la fois.
Un petit exercice de reconnaissance
Essaie de lancer le bloc ci-dessous tel quel, puis change quelques valeurs et regarde en quoi les types se transforment :
Tu n'as pas besoin de comprendre for pour l'instant — on y arrivera — mais ça te donne une sensation des types intégrés en un coup d'œil.
Choisis le type qui colle aux données
Tu n'as pas besoin de mémoriser chaque type maintenant. Tu dois pouvoir en reconnaître un quand tu le vois, et choisir le bon quand tu crées des données. « Est-ce que c'est fixe ou changeant ? Unique ou pas ? Est-ce que je recherche par clé ou par position ? » Ces quatre questions choisissent le type de collection dans quatre-vingt-dix pour cent des cas.
Ensuite : les chaînes en profondeur, parce qu'elles sont le seul type de données que tu toucheras dans presque tous les programmes.
Questions fréquentes
Quels sont les principaux types de données en Python ?
Les nombres (int et float), les chaînes (str), les booléens (bool), None, et quatre types de collections — list, tuple, set et dict. Tout le reste de ce que tu vois dans le code Python est construit à partir de ceux-ci plus une poignée d'autres (bytes, complex, frozenset).
Comment vérifier le type d'une valeur en Python ?
Enveloppe-la dans type() : type(42) renvoie <class 'int'>, type('hi') renvoie <class 'str'>. Pour un test vrai/faux, utilise isinstance(valeur, int) — c'est plus flexible parce que ça gère aussi les sous-classes.
Python est-il à typage statique ou dynamique ?
À typage dynamique. Une variable peut pointer vers n'importe quel type de valeur, et la même variable peut changer de type au cours de sa vie. C'est différent de langages comme Java ou C++, où tu déclares le type d'une variable une fois et il ne peut pas changer.