2.1 Détermination du type
Parfois, à un endroit donné du code, on ne sait pas exactement quelles données sont stockées dans une variable. Pour cela, Python a une fonction type()
, qui est utilisée pour déterminer le type d'un objet.
C'est une fonction intégrée qui renvoie le type de l'objet spécifié, ce qui peut être utile pour le débogage, la validation de données ou lors de l'implémentation d'une logique dépendant des types de données.
Principe de fonctionnement de la fonction type()
Quand tu appelles type(x)
, Python renvoie un objet spécial type
, qui représente le type de la variable x. Par exemple :
x = 1
print(type(x)) # Affichera: <class 'int'>
x = "salut"
print(type(x)) # Affichera: <class 'str'>
x = [1, 2, 3]
print(type(x)) # Affichera: <class 'list'>
Remarque que le mot "class" sera affiché. C'est parce que même les types int, str, list et d'autres sont aussi des classes, simplement intégrées — tu n'as pas besoin de les déclarer, elles sont fournies par défaut avec Python.
Utilisation pratique
La fonction type()
est souvent utilisée dans des scénarios où il est nécessaire de différencier les actions en fonction du type de données.
- Des actions différentes peuvent être effectuées en fonction du type de la variable.
- Dans les fonctions et les méthodes, pour s'assurer de la validité des types d'arguments.
Si tu veux t'assurer qu'une variable contient un nombre, écris du code de ce type :
arg = 123
if type(arg) == int:
print(arg + 10) # Affichera: 133
Un exemple plus pratique, où nous vérifions le type de l'objet stocké dans la variable :
arg = "123"
if type(arg) == int:
print(arg + 10) # Cela ne s'exécutera pas, car arg est une chaîne
elif type(arg) == str:
print(arg + " monde") # Affichera: 123 monde
else:
print("Type inconnu")
2.2 Attribution explicite de type
En Python, l'indication explicite du type d'objet se fait à l'aide de fonctions de conversion de type, telles que int()
, float()
, str()
, tuple()
et d'autres. Ces fonctions permettent de spécifier un type particulier et de convertir des données d'un type en un autre, ce qui est pratique pour traiter les entrées utilisateur, effectuer des opérations mathématiques ou travailler avec des chaînes et des collections de données.
Exemples de fonctions de conversion de type
int()
: Convertit les données en un nombre entier. On a déjà rencontré cette fonction plusieurs fois et on sait que si on passe une chaîne avec un nombre, int()
la convertira en le nombre entier correspondant.
num = int("123") # num sera le nombre entier 123
float()
: Une autre fonction familière. Convertit les données en un nombre à virgule flottante.
num = float("123.45") # num sera 123.45
str()
: Convertit n'importe quel objet Python en une représentation sous forme de chaîne.
s = str(10.5) # s sera '10.5'
tuple()
: Convertit une séquence en un tuple.
t = tuple([1, 2, 3]) # t deviendra (1, 2, 3)
list()
: Convertit un objet itérable (par exemple, une chaîne ou un tuple) en liste. Un objet itérable est un objet qui peut être parcouru séquentiellement, comme des chaînes, des listes ou des tuples.
l = list("abc") # l sera ['a', 'b', 'c']
dict()
: Crée un dictionnaire à partir d'une séquence clé-valeur.
d = dict([(1, 'a'), (2, 'b')]) # d sera {1: 'a', 2: 'b'}
Nous parlerons des dictionnaires et des tuples un peu plus tard, mais je pense que tu as compris l'idée générale : si tu dois explicitement assigner un type, tu peux toujours utiliser les fonctions mentionnées ci-dessus.
2.3 Conversion des types
En Python, la conversion explicite (ou casting) permet aux programmeurs de contrôler et de modifier les types de données des variables. Cela peut être utile pour assurer la compatibilité des données dans différentes opérations ou pour corriger les types de données reçus par saisie utilisateur ou lors de la lecture de fichiers. Essentiellement, une conversion ou un casting de type signifie la même chose : le processus de modification du type de données d'un objet en un autre type.
Nous sommes déjà un peu familiers avec le casting explicite. En Python, il est réalisé via des fonctions intégrées, comme int()
, float()
, str()
, tuple()
, list()
, dict()
, set()
et d'autres.
Pour consolider, voici quelques exemples supplémentaires :
Fonction | Description | Exemple d'entrée | Exemple de sortie |
---|---|---|---|
int() |
Conversion en un nombre entier | int("10") | 10 |
float() |
Conversion en un nombre à virgule flottante | float("20.5") | 20.5 |
str() |
Conversion en chaîne | str(15) | "15" |
tuple() |
Conversion en tuple | tuple([1, 2, 3]) | (1, 2, 3) |
list() |
Conversion en liste | list("abc") | ['a', 'b', 'c'] |
dict() |
Création d'un dictionnaire à partir de paires clé-valeur | dict([(1, 'one'), (2, 'two')]) | {1: 'one', 2: 'two'} |
set() |
Création d'un ensemble à partir d'une liste | set([1, 1, 2, 2, 3, 3]) | {1, 2, 3} |
Exemples d'utilisation
Le casting explicite est utilisé dans de nombreux scénarios, y compris :
- Traitement de l'entrée utilisateur : Garantir que les données saisies correspondent au type de données attendu.
- Interopérabilité des données : Quand les données de différentes sources ou API doivent être combinées ou comparées.
- Gestion des erreurs : Prévenir les erreurs d'exécution en convertissant les données en un type approprié avant d'effectuer des opérations.
Meilleures pratiques et avertissements
Le casting explicite doit être utilisé de manière réfléchie pour éviter la perte de données (par exemple, lors de la conversion d'un float
en int
) ou des erreurs de conversion (par exemple, tenter de convertir une chaîne non numérique en un nombre).
Il est également important de se rappeler que certaines conversions peuvent ne pas être évidentes et mener à des résultats inattendus, nécessitant une vérification minutieuse des données. Par exemple, convertir un int
en bool
et vice versa peut avoir des effets inattendus :)
GO TO FULL VERSION