Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Scripting Python sous Linux
  3. Les types de données en Python
Extrait - Scripting Python sous Linux Développez vos outils système (2e édition)
Extraits du livre
Scripting Python sous Linux Développez vos outils système (2e édition)
2 avis
Revenir à la page d'achat du livre

Les types de données en Python

Introduction

Après quelques notions de base et la structure syntaxique des instructions Python, il est judicieux d’étudier la matière première que manipulent celles-ci, à savoir les données, et plus particulièrement les types de données.

Il faut le savoir, avec Python, tout est objet, au sens informatique du terme, y compris les types de données.

Tout cela est expliqué en profondeur dans le chapitre Le coté Objet de Python, mais vous devez accepter le fait que les nombres, les chaînes de caractères, les fonctions... tout est objet.

Ces explications vous sont données pour que vous ne soyez pas surpris de certaines notations typiquement objet, comme <variable.fonction()> ou plutôt <objet.méthode()>.

Exemple

   "Python".upper() 
   botte_de_foin.find(aiguille) 
   beaucoup.count('u') 

Dans ces objets manipulables par le langage Python, il existe des types de données prédéfinis intégrés à l’interpréteur et utilisables de suite.

En attendant que vous puissiez créer vos propres objets et types de données, voici une description des types de données les plus courants :

  • les booléens

  • les numériques

  • les alphanumériques

  • les conteneurs ou séquentiels

Les booléens

Dans les premières versions de Python, le type booléen n’existait pas et on utilisait simplement 0 pour False (Faux) et 1 pour True (Vrai).

Et cela fonctionnait bien. Mais, certainement dans le but de rendre le langage plus professionnel, le type booléen a été ajouté.

Ce type booléen contient deux constantes : True (Vrai) et False (Faux).

En fait, il s’agit d’entier déguisé car il est possible de faire :

>>> True + 1 
2 

Tout objet peut être comparé à une valeur booléenne et quasiment tout est considéré comme Vrai, sauf :

  • les constantes False et None

  • la valeur 0

  • la chaîne de caractères vide ( ’’ )

  • les listes tuples et autres conteneurs vides ( [] {} () … )

Communément utilisé dans la recherche de la vérité, le type booléen est associé à trois opérateurs et à huit formes de comparaisons.

1. Les opérateurs booléens

Les opérateurs booléens classiques sont or, and, et not.

Commençons par l’opérateur le plus simple : not. Il renvoie un booléen.

not X renvoie False si x est Vrai, sinon retourne True.

Par contre, attention avec les opérateurs and et or : ceux-ci ne renvoient pas systématiquement un booléen.

Opérations

Résultats

X or Y

Si X est faux, retourne Y, sinon, retourne X

X and Y

Si X est faux, retourne X, sinon, retourne Y

Voici le tableau croisé des résultats pour X or Y.

5 et 8 sont des entiers pris au hasard, le but est d’illustrer avec une valeur numérique quelconque.

X OR Y

Y = True

Y = False

Y = 8

Y = 0

Y = ()

Y = []

Y = {}

X = True

True

True

True

True

True

True

True

X = False

True

False

8

0

()

[]

{}

X = 5

5

5

5

5

5

5

5

X = 0

True

False

8

0

()

[]

{}

X = ()

True

False

8

0

()

[]

{}

X = []

True

False

8

0

()

[]

{}

X = {}

True

False

8

0

()

[]

{}

Et voici pour l’opérateur and :

X AND Y

Y = True

Y = False

Y = 8

Y = 0

Y = ()

Y = []

Y = {}

X = True

True

False

8

0

()

[]

{}

X = False

False

False

False

False

False

False

False

X = 5

True

False

8

0

()

[]

{}

X = 0

0

0

0

0

0

0

0

X = ()

()

()

()

()

()

()

()

X = []

[]

[]

[]

[]

[]

[]

[]

X = {}

{}...

Les numériques

Trois grandes familles de numériques : les entiers, les flottants et les complexes. 

Autant le dire tout de suite, l’utilisation des nombres complexes dépasse de loin le cadre de cet ouvrage.

Ayez confiance sur ce point, car même l’article de Wikipédia sur le sujet est difficile d’accès dès les premiers paragraphes.

Si vous en avez besoin et que vous savez vous en servir, bonne nouvelle : c’est implémenté en standard dans le langage Python.

Pour les autres, soyons raisonnables et passons sur les ensembles plus accessibles comme les entiers et les flottants.

1. Les entiers

Que dire sur les entiers en Python…? Ils ont une précision illimitée, depuis la version 3, il n’y a plus d’entier court et d’entier long, juste des entiers.

Cependant, quand on cherche un peu plus, on trouve dans le module ’sys’ (un module proche du système) une limite mais qui n’en est pas vraiment une.

Le module ’sys’ permet l’accès à des variables système maintenues par l’interpréteur. 

Dans ce module se trouve une valeur qui se nomme maxsize ; pour l’obtenir, nous devons importer le module ’sys’ et afficher la valeur :

>>> import sys 
>>> print(sys.maxsize) 
9223372036854775807 

Mais ce n’est pas une limite, car il est possible de faire la chose suivante :

>>> maximum = sys.maxsize 
>>> print( maximum + 1) 
9223372036854775808 

Même avec Python, quand on dépasse les bornes, il n’y a plus de limite. Cependant, il y a quand même une explication technique.

Ce nombre maxsize correspond à l’entier maximum pour le format de stockage par défaut du langage Python, mais si le besoin est plus important, pas de problème. Par contre, les opérations sur les entiers...

Les alphanumériques

Après le calcul, le texte… Voici le moment d’étudier les chaînes de caractères en Python.

Il s’agit du type "string", mais nous préférons la dénomination "chaîne de caractères" pour la simple et bonne raison que l’image des maillons d’une chaîne est proche de ce type de données.

À la différence des numériques, qui sont des types de données composés d’un seul élément, le type "string" est un type de donnée séquentielle (d’où l’image des maillons d’une chaîne).

Le langage permet d’utiliser une chaîne comme un objet unique, la chaîne dans sa globalité, mais aussi d’accéder à chaque élément (les caractères) de cet objet.

À savoir : la taille d’une chaîne de caractères n’a de limite que la mémoire physique allouable (à tester sur une machine sans mémoire swap si vous ne voulez pas écrouler votre serveur).

La création d’une chaîne de caractères est simple, ce type de données doit juste être délimité par un simple guillemet (quote) ’ ou un double guillemet " et il est même possible d’utiliser un triple double guillemet """.

Exemple

a = "hello world" 

L’utilisation des doubles guillemets ou des simples guillemets n’a pas d’importance, sauf quand il s’agit de mixer les deux.

a = "voici un cas typique d'utilisation des doubles quotes" 
#                          ^ 
# -------------------------| 
 
a = ' je lui ai dit "Attention aux doubles quotes" ' 
#                   ^                            ^ 
# ------------------|----------------------------| 

Les triples guillemets permettent de saisir du texte sur plusieurs lignes, ce qui peut être très pratique.

a= """ 
Hello the world ! 
============ 
""" 

1. Les opérations applicables aux chaînes...

Les conteneurs ou séquentiels

Peut-être commencez-vous à apprécier ce langage, mais attention, une fois que vous aurez goûté à ce qui va suivre, vous allez l’adopter.

Le type de données alphanumérique donne un petit avant-goût de ce que l’on peut faire avec les listes, qui sont un type de données fondamental en Python.

1. Les listes

Ce type porte bien son nom, car il s’agit d’un objet qui peut en contenir d’autres, avec comme unique limite la taille de la mémoire.

La syntaxe est comme d’habitude très simple, sauf que dans le cas des listes, vous pouvez utiliser un raccourci ou la création d’un objet "list".

Les deux syntaxes sont importantes.

Le double crochet permet de créer une liste vide ou de l’initialiser dès l’affectation.

Exemple

>>> a = []        # Liste vide 
>>> b = [1,2,3]   # petite liste de 3 entiers 
>>> a 
[] 
>>> b 
[1, 2, 3] 

Mais dans une liste, il est possible de stocker tous les types de données et objets que connaît Python.

Exemple (avec les variables initialisées dans l’exemple précédent)

>>> c = [ "a", 1.0, b , 42 ] 
>>> c 
['a', 1.0, [1, 2, 3], 42] 

Dans l’exemple ci-dessus, on stocke dans la liste ’c’ une chaîne de caractères, un flottant, une autre liste et un entier.

L’intérêt est de pouvoir parcourir tout cela.

>>> for element in c: 
...   print(" => ", element) 
... 
=>  a 
=>  1.0 
=>  [1, 2, 3] 
=>  42 

L’autre syntaxe est tout aussi importante, même si elle vient en avance sur un prochain chapitre consacré à la programmation orientée objet (POO).

Il est aussi possible d’utiliser la syntaxe suivante :

>>> a = list()        # création d'une instance de liste 
>>> a 
[] 

Avec une liste en argument, cela permet de copier la liste.

>>> d = list(c) 
>>> d 
['a', 1.0, [1, 2, 3], 1912] 

Mais attention, d et c sont deux listes différentes, alors que si l’on tape :

>>> e = d 
>>>...

Autres types de données

D’autres types de données existent dans le langage Python, comme les vues de dictionnaires par exemple.

Il y a aussi les slices, des objets prévus pour découper les listes et autres séquences, les bytes et bytearray, qui sont des classes prévues pour manipuler des octets.

Le type bytes a son importance car, cela sera vu plus tard, il permet de manipuler des fichiers en mode binaire.

C’est un peu comme un entier, mais avec des méthodes supplémentaires.

Le problème est que, de nos jours, on ne manipule que très rarement des octets, le type Texte de gestion des fichiers gère automatiquement et proprement l’encodage en utf-8, ce qui inclut l’ascii.

Encore une information :  voici la hiérarchie des types de données en Python.

None

Oui c’est un type de données

Not Implemented

Lui aussi

Ellipse

Pour la gestion de ’…’  ou Ellipsis

C’est un objet pour représenter les boucles récursives

numbers

Entiers/Flottants, etc.

Séquences

 

    muables

Listes

    immuables

Tuples

Ensembles

 

    Ensembles

Set

    Ensembles gelés

Frozenset

Tableau de correspondance

 

    Dictionnaire

 

Types appelables

Callable en anglais, les fonctions par exemple

Modules

Appelable par l’instruction ’import’...

Résumé

Dans ce chapitre ont été étudiés les types de données que connaît Python ainsi que les opérateurs et méthodes applicables sur ceux-ci.

À partir de ces types de base, il est possible de construire des structures complexes de données sans autre limite que votre imagination.