Aller au contenu

Comprendre la conversion de types en Python : Guide complet

Python est un langage de programmation de haut niveau devenu populaire pour sa simplicité, sa lisibilité et sa polyvalence. L'une des fonctionnalités de Python est la conversion de types (type casting), qui consiste à convertir un type de données en un autre. Ce guide vise à fournir une compréhension complète de la conversion de types en Python.

Qu'est-ce que la conversion de types ?

La conversion de types, également appelée changement de type, est un processus qui consiste à convertir des données d'un type vers un autre. En Python, cela peut être réalisé à l'aide de fonctions telles que int(), float() et str(). Par exemple, convertir un nombre à virgule flottante en entier avec int() ou convertir une chaîne de caractères en nombre à virgule flottante avec float().

Pourquoi la conversion de types est-elle importante en Python ?

La conversion de types est importante en Python car les différents types de données ont des propriétés et des fonctions associées distinctes. Par exemple, les entiers peuvent être utilisés pour des opérations mathématiques, tandis que les chaînes de caractères servent à la manipulation de texte. En convertissant des données d'un type à un autre, nous pouvons effectuer des opérations spécifiques à ce type de données.

Types de conversion de types en Python

En Python, il existe deux types de conversion de types : la conversion implicite et la conversion explicite.

Conversion implicite

La conversion implicite, également appelée conversion automatique de type, se produit lorsque Python convertit automatiquement un type de données en un autre sans appels de fonction explicites. Cela se produit généralement lors d'opérations où Python élève un type pour éviter toute perte de données.

Par exemple, lorsqu'un entier est utilisé dans une opération arithmétique avec un nombre à virgule flottante, Python convertit automatiquement l'entier en nombre à virgule flottante :

Python casting int to float

python
x = 10
y = x + 1.5
print(y)
print(type(y))

Sortie :

console
11.5
<class 'float'>

Dans cet exemple, l'entier 10 est automatiquement promu en nombre à virgule flottante lors de l'ajout de 1.5, ce qui donne une valeur de type float.

Conversion explicite

La conversion explicite, également appelée conversion manuelle de type, se produit lorsqu'un programmeur convertit explicitement une valeur d'un type à un autre à l'aide de fonctions de conversion de type.

Par exemple, si nous souhaitons convertir un entier en nombre à virgule flottante, nous pouvons utiliser la fonction float() :

Python casting int to float

python
x = 10
y = float(x)
print(y)

Sortie :

console
10.0

Dans cet exemple, l'entier 10 est explicitement converti en nombre à virgule flottante 10.0 à l'aide de la fonction float().

Exemples de conversion de types en Python

Voici quelques exemples de conversion de types en Python :

Python casting numeric

python
# Converting an integer to a floating-point number
x = 10
y = float(x)
print(y)

# Converting a floating-point number to an integer
x = 10.5
y = int(x)
print(y)

# Converting a string to an integer
x = "10"
y = int(x)
print(y)

# Converting a string to a floating-point number
x = "10.5"
y = float(x)
print(y)

# Converting an integer to a string
x = 10
y = str(x)
print(y)

# Converting a floating-point number to a string
x = 10.5
y = str(x)
print(y)

# Converting a number to a boolean
x = 0
y = bool(x)
print(y)

x = 10
y = bool(x)
print(y)

Problèmes courants de conversion de types en Python

Plusieurs problèmes courants peuvent survenir lors de la conversion de types en Python. Voici les plus fréquents :

TypeError

Un TypeError se produit lorsqu'une fonction de conversion de type est appelée avec un argument d'un type non pris en charge. Par exemple, tenter de convertir une liste ou None en entier déclenche un TypeError :

Python casting unsupported type to int

python
x = []
y = int(x)
print(y)

Sortie :

console
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

Dans cet exemple, la liste [] ne peut pas être convertie en entier, ce qui provoque une erreur TypeError.

ValueError

Un ValueError se produit lorsqu'une fonction de conversion de type est appelée avec un argument qui n'est pas une valeur valide pour ce type. Par exemple, si nous tentons de convertir une chaîne de caractères non convertible en nombre à virgule flottante à l'aide de la fonction float(), un ValueError sera levé :

Python casting string to float

python
x = "hello"
y = float(x)
print(y)

Sortie :

console
ValueError: could not convert string to float: 'hello'

Dans cet exemple, la chaîne "hello" ne peut pas être convertie en nombre à virgule flottante, ce qui provoque une erreur ValueError.

Perte de précision

Lors de la conversion d'un nombre à virgule flottante en entier, une perte de précision peut survenir. En effet, la partie décimale du nombre à virgule flottante sera tronquée et seule la partie entière sera conservée. Par exemple :

Python casting float to int

python
x = 10.5
y = int(x)
print(y)

Sortie :

console
10

Dans cet exemple, la partie décimale du nombre à virgule flottante 10.5 est perdue lors de sa conversion en entier 10.

Conversion de types sécurisée avec try/except

Pour éviter que votre programme ne plante lorsque des données invalides sont passées aux fonctions de conversion, vous pouvez utiliser des blocs try/except :

Python safe casting with try/except

python
def safe_cast(value, target_type):
    try:
        return target_type(value)
    except (ValueError, TypeError) as e:
        print(f"Conversion failed: {e}")
        return None

safe_cast("hello", int)
safe_cast("10", int)

Sortie :

console
Conversion failed: invalid literal for int() with base 10: 'hello'
10

L'utilisation de blocs try/except vous permet de gérer les entrées invalides de manière élégante sans interrompre l'exécution de votre code.

Conclusion

Dans ce guide, nous avons couvert les bases de la conversion de types en Python. Nous avons discuté de ce qu'est la conversion de types, de son importance et des différents types de conversion. Nous avons également vu plusieurs exemples de conversion de types en action, ainsi que certains problèmes courants qui peuvent survenir. En comprenant la conversion de types, vous serez en mesure d'écrire du code plus efficace et polyvalent en Python.

Pratique

En Python, comment la conversion de types s'effectue-t-elle et quelles sont ses fonctions ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.