2.4. Conversions de types

On peut convertir un objet d’un type vers un autre type : il suffit pour cela d’utiliser le nom du type vers lequel on veut convertir. On parle alors de conversion explicite.

In [1]: int('42')
Out[1]: 42

In [2]: type(int('42'))
Out[2]: int

In [3]: str(25)
Out[3]: '25'

In [4]: type(str(25))
Out[4]: str

Il se peut que certaines conversions soient impossibles.

In [5]: int('45f6')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[5], line 1
----> 1 int('45f6')

ValueError: invalid literal for int() with base 10: '45f6'

L’utilisation d’opérateurs pour des objets dont le type n’est pas approprié peut donner lieu à des conversions implicites.

# Le booléen True est automatiquement converti en l'entier 1 pour pouvoir l'ajouter à l'entier 2
In [6]: True + 2
Out[6]: 3

Mais il se peut qu’aucune conversion implicite ne puisse avoir lieu, ce qui conduit alors à une erreur.

In [7]: 'a' + 1.23
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[7], line 1
----> 1 'a' + 1.23

TypeError: can only concatenate str (not "float") to str