Vous êtes sur la page 1sur 119

Dr Lambert KADJO

lamberttanon_k@yahoo.fr
http://www.kadjo-lambert.c4.fr
1
2017-2018
UE- PYTHON AVANCÉ

Chapitre I : RÉFÉRENCES PARTAGÉES ET GESTION DES EXCEPTIONS


Chapitre II : FONCTIONS: UTILISATION AVANCEE
Chapitre III : CONCEPTION DES CLASSES
Chapitre IV : FICHIERS ET SYSTÈMES DE FICHIERS
Chapitre V : PYTHON ET LES ENSEMBLES DYNAMIQUES

Durée : 24H ( CM :14H, TD :4H, TP :6H)

2
www.kadjo-lambert.c4.fr
UE- PYTHON AVANCÉ

CHAPITRE I : REFERENCES PARTAGEES ET GESTION


DES EXCEPTIONS
I.1 Références partagées
I.2 Gestion des exceptions

Durée : 3H ( CM :2H, TP :1H)

3
www.kadjo-lambert.c4.fr
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Définition et illustration1
 On parle de référence partagée, lorsqu’au moins 2 variables référencent le même
objet.
 cela ne cause aucun problème lorsque l’objet est immuable
 lorsque l’objet référencé est un mutable, il y a ce que l’on appelle effet de bord

Variables Objet

1
21
temp int

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Illustration 1
Variables Objet

0
21
temp int

1
'data sce'
str

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
illustration1
Variables Objet

temp

2
'data sce'
ecole str

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
illustration2
Variables Objet

2
21
temp int

ecole

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
illustration2
Variables Objet

1
21
temp int

1
'data sce'
ecole str

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
illustration3
Variables Objet

21 'data sce'
temp

[ . , .]

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
illustration3
Variables Objet

21 'data sce'
temp

[ . , .]
ecole

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
illustration3
Variables Objet

21 'data sce'
temp

[ . , .]
ecole

'master'

ecole voit le même


objet que temp
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Illustration4: shallow copy
Variables Objet

21 'data sce'
temp

[ . , .] [ . , .]
ecole

Copie de premier niveau

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Illustration4: shallow copy
Variables Objet

21 'data sce'
temp

[ . , .] [ . , .]
ecole

'master'

Copie de premier niveau

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Illustration4: shallow copy
Variables Objet

21 [.] 'data sce'


temp

[ . , .] [ . , .]
ecole

Copie de premier niveau

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Illustration4: shallow copy
Variables Objet

21 [.] 'data sce'


temp

[ . , .] [ . , .]
ecole

'master'

Copie de premier niveau


Effet de bord

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Illustration4: deepcopy
Variables Objet

21 [.] 'data sce'


temp

[ . , .] [ . , .]
ecole

[.]

Copie en profondeur avec deepcopy


DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.1 Références partagées
EXCEPTIONS
Illustration4: deepcopy
Variables Objet

21 [.] 'data sce'


temp
'master'

[ . , .] [ . , .]
ecole

[.]

Copie en profondeur avec deepcopy

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Exemple introductif
Une instruction ou une expression
syntaxiquement correcte peut
générer une erreur lors de son
exécution. Les erreurs détectées
durant l’exécution sont appelées
des exceptions et ne sont pas
toujours fatales

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Exemple introductif

Exception levée par l’interpréteur


suite à une erreur de type valueError
lors de l’exécution du code

NE JAMAIS FAIRE CONFIANCE A L’UTILISATEUR


DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
 Solution fiable et standardisée de gestion d’erreurs d’exécution, non fondée sur les
valeurs de retour des fonctions.

 permet de capturer toutes les exceptions d’un type donné,

permet de lever des exceptions et transférer le contrôle avec les informations


pertinentes à une autre partie du code qui pourra gérer la situation correctement,

en retirant le code de traitement des erreurs du « flot principal » d’exécution d’un
programme, cela permet d’améliorer la lisibilité des programmes et faciliter leur
maintenance.

permet de gérer nativement les appels de fonctions en cascade

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Deux phases distinctes :
 L’erreur provoque l’occurrence d’une exception
Lors de la détection d’une erreur et à la reconnaissance de la condition
d’exception, l’interpréteur effectue une opération appelée levée, lancement
ou génération d’exception. L’interpréteur sait alors qu’il doit quitter le flux
de contrôle normal.

 La prise en compte de l’exception


Le cours normal de l’exécution est interrompu afin de traiter l’exception
Diverses actions peuvent être envisagées:
- informer l’utilisateur, sauver son travail et arrêter le programme de façon
contrôlée,
- traiter le problème de façon à permettre la poursuite de l’exécution i.e. de
mettre en œuvre des solutions de reprises et de correction,

Le programmeur peut donc dicter sa conduite au programme lorsqu’une erreur se produit.
Ces erreurs survenant lors de l’exécution sont essentiellement dues à des causes
extérieures hors du contrôle du programmeur.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
 Lorsque votre programme s’interrompt en raison d’erreurs non corrigées, une trace
apparaît. Cela contient toutes les informations que l’interpréteur est en mesure de
fournir, parmi lesquelles le nom de l’erreur, sa cause, et peut-être même le numéro de
ligne exact où l’erreur est survenue.
 NotImplementedError : Un développeur a volontairement levé cette exception dans une
des méthodes de sa classe afin de signaler que c’est aux filles de la classe de
l’implémenter.
 IndentationError ou TabError: Le fichier mélange des tabulations et des espaces ou
n’utilisent pas le même nombre de tabulations ou d’espaces partout.
 ImportError: Python ne peut pas importer un module.
 AssertionError: Une expression assert est fausse.
 AttributeError: l’on demande à un objet de fournir un attribut qu’il ne possède pas.
 NameError: l’on tente d’utiliser un nom (de variable, fonction, classe, etc) qui n’existe pas.
 IndexError: l’on tente d’accéder à une partie d’une intérable (souvent une liste ou un
tuple) qui n’existe pas.
 KeyError: l’on tente d’accéder à une clé d’un mapping (souvent un dictionnaire) qui
n’existe pas
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
 TypeError: l’on tente une opération incompatible avec ce type.
 ValueError: l’on passe une valeur à une fonction qui n’a aucun sens dans ce contexte ou
dont le sens est ambiguë.
 ZeroDivisionError: l’on fait une division par zéro
 IOError: Erreur d’entrée / sortie (par exemples disque dur plein, système corrompu,
absence de permissions, fichier inexistant)
 OSError: Le système d’exploitation retourne une erreur (concerne souvent le système de
fichier ou l’utilisation d’un sous-process avec les modules os, shutils, popen, subprocess,
multiprocessing, etc.
 MemoryError: l’on utilise trop de mémoire

Voir la liste complète

https://docs.python.org/fr/3/library/exceptions.html
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions
On peut détecter les exceptions en plaçant les instructions qui peuvent les générer dans un
bloc try.

Une instruction try peut être accompagnée d’une ou plusieurs clauses except,
d’une seule clause finally ou d’une combinaison try-except-finally

Syntaxe simple:

try:
Les instructions à surveiller lors de la détection d’exceptions.
except :
Les instructions pour la prise en charge des exceptions.
else :
Les instructions si pas de détection d’exceptions.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

Syntaxe complète:
try:
Les instructions à surveiller lors de la détection d’exceptions.
except :
Les instructions pour la prise en charge de Exception1.
else :
Les instructions si pas de détection d’exceptions.
finally :
Les instructions toujours exécutées même en cas d’exceptions.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions
Syntaxe pour être plus précis:
try:
Les instructions à surveiller lors de la détection d’exceptions.
except Exception1:
Les instructions pour la prise en charge de Exception1.
except Exception2:
Les instructions pour la prise en charge de Exception2.
else :
Les instructions si pas de détection d’exceptions.
finally :
Les instructions toujours exécutées même en cas d’exceptions.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions
L’instruction except peut être suivie d’un nombre quelconque d’exceptions, pour peu
qu’elles soient insérées dans un tuple

except (Exception1, Exception2):


Les instructions pour la prise en charge de Exception1 et Exception2

Il est courant de voir un bloc try-except imbriqué dans un bloc try-finally

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions personnalisées
Un programmeur peut lui aussi souhaiter lancer une exception face à une entrée jugée
erronée, par exemple grâce à l’instruction raise.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions personnalisées
Un programmeur peut lui aussi souhaiter lancer une exception face à une entrée jugée
erronée, par exemple grâce à l’instruction raise.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
1. REFERENCES PARTAGEES ET GESTION DES 1.2 Gestion des exceptions
EXCEPTIONS
Mécanisme
Détection et traitement des exceptions personnalisées
 L’instruction assert évalue une expression booléenne, n’opère aucune action en cas de
succès, mais lève une exception AssertionError en cas d’échec.
assert expression, argument # L’argument est optionnel.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
UE- PYTHON AVANCÉ

Chapitre II : FONCTIONS: UTILISATION AVANCEE


2.1 Rappels
2.2 Maitrise de l’utilisation des arguments
2.3 Maitrise de la signature des fonctions
2.4 Portée des variables dans les fonctions
2.5 Fonction lambda
2.6 Compréhension de listes, ensembles et dictionnaires
2.7 Expression et Fonction génératrices
2.8 Autres points sur les fonctions

Durée : 24H ( CM :14H, TD :4H, TP :6H)

38
www.kadjo-lambert.c4.fr
2. FONCTIONS: UTILISATION AVANCEE 2.1 Rappels

Définition et syntaxe
Définition: Une fonction est un ensemble d’instructions regroupées sous un nom et s’exécutant
à la demande
Syntaxe: La définition d’une fonction est composée :
 du mot clé def suivi de l’identificateur de la fonction, de parenthèses entourant les paramètres de
la fonction séparés par des virgules, et du caractère « deux points » qui termine toujours une
instruction composée ;
 d’une chaîne de documentation indentée comme le corps de la fonction ;
 du bloc d’instructions indenté par rapport à la ligne de définition, et qui constitue le corps de la
fonction.
 Le bloc d’instructions est obligatoire. S’il est vide, on emploie l’instruction pass.
 La documentation (facultative) est fortement conseillée
 l’instruction return permet de renvoie une valeur pouvant être n’importe quel type vu
précédemment
 La signature d'une fonction est la combinaison du nom de la fonction et de la liste de ses arguments

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.1 Rappels

Définition et syntaxe de fonctions sans paramètre

 Valeur de retour
le mot clé return permet de spécifier une valeur de retour

 Si plusieurs return, le premier exécuté


produit le retour de la fonction

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.1 Rappels

Objet fonction
 On passe les arguments par les références  Le corps de la fonction n’est exécuté que
lors de l’appel de la fonction et non lors du
chargement

Pas d’exception ici !!


 On peut facilement renommer une fonction

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.1 Rappels

Passage des arguments


 chaque argument de la définition de la fonction correspond, dans l’ordre, à un paramètre de
l’appel.
La correspondance se fait par affectation des paramètres aux arguments

Définition

Affectation
a=4
b=5

Appel

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.1 Rappels

Polymorphisme
 Les fonctions sont polymorphes (acceptent des arguments de n’importe quel type)
 il faut que ces types soient compatibles avec les opérations dans le corps de la fonction

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet non mutable


 Tous les paramètres sont passés par référence car Python ne manipule que les références
des objets. Cependant, le passage se fait par copie

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet non mutable


 Tous les paramètres sont passés par référence car Python ne manipule que les références
des objets. Cependant, le passage se fait par copie

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet mutable

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet mutable
Concernant les listes, dictionnaires, ensembles

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet mutable
Concernant les listes, dictionnaires, ensembles

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet mutable
Concernant les listes

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet mutable
Concernant les listes

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet mutable
Concernant les listes, dictionnaires, ensembles

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Objet mutable
Concernant les listes, dictionnaires, ensembles

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.2 Maitrise de l’utilisation des arguments

Un ou plusieurs paramètres, un ou plusieurs retours


Une fonction vaut quelque chose, une procédure fait quelque chose.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Fonctions sans paramètre


 Une fonction peut ne pas comporter de paramètre dans sa signature. Dans ce cas, les
valeurs peuvent
 provenir d’une variable de l’espace global
 d’une sollicitation de l’utilisateur par appel à la fonction input()
 d’un fichier de données

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Fonctions à arguments obligatoires


 Une fonction peut comporter de paramètre dans sa signature. Dans ce cas, les valeurs
peuvent
 provenir d’une variable de l’espace global
 d’une sollicitation de l’utilisateur par appel à la fonction input()
 d’un fichier de données
 en plus d’un ou plusieurs arguments fournis obligatoirement par le programmeur lors de
son appel

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Fonctions à arguments par défaut


 il est possible de mettre des arguments optionnels à condition de leur donner une valeur
par défaut et ils doivent nécessairement être placés après les arguments obligatoires s’il en
existe:

On peut nommer les arguments, Dans ce cas,


les arguments non nommés sont placés au début

On peut afficher les arguments optionnels

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Fonctions à arguments par défaut


Ils permettent d’appeler la fonction avec moins d’arguments ou les arguments dans
n’importe quel ordre

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Fonction à liste extensible d'arguments non nommés


 Python permet de créer une fonction dont le nombre d'arguments n'est pas défini à
l'avance.
 La syntaxe est la suivante, avec une * devant le nom de ce qui sera un tuple contenant la
liste des paramètres ( 'args’ est très souvent utilisé mais on peut appeler ce tuple
autrement):

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Fonction à liste extensible d'arguments nommés


 Il existe une façon de capturer les paramètres nommés d'une fonction:
 ces paramètres seront placés dans un dictionnaire.
 le nom donné au paramètres sera une clé du dictionnaire, la valeur effective sera la
valeur liée à la clé.
 Pour capturer tous les paramètres nommés non précisés dans un dictionnaire, il faut
mettre deux étoiles ** avant le nom du paramètre.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Fonction à liste extensible d'arguments nommés

 Transformation d’un dictionnaire en paramètres nommés d'une


fonction
Pour indiquer à Python que le dictionnaire doit être transmis comme des paramètres nommés,
on place deux étoiles avant son nom ** dans l'appel de la fonction.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Signature mixte
Pour avoir une fonction qui accepte n'importe quel type de paramètres, on peut mixer tous ces
mécanismes de passage d'arguments mais en respectant l'ordre suivant: arguments obligatoires,
optionnels, extensible non nommés puis extensible nommés:

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Signature mixte

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.3 Maitrise de la signature des fonctions

Signature mixte

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.4 Portée des variables dans les fonctions

Scope local/scope global


 Le corps d’une fonction définit un bloc de code
 C’est le scope local
 Le bloc de code d’un module (tout ce qui est défini en dehors de la fonction) est appelé
scope global. Les variables définies à l'extérieur d'une fonction sont des variables
globales. Leur contenu est « visible » (l’id de la variable c reste inchangé) de l'intérieur
d'une fonction, mais la fonction ne peut pas le modifier (contenus des variables a et b ).

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.4 Portée des variables dans les fonctions

Scope local/scope global


 pour modifier une variable globale dans une fonction on utilise le mot clé global

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.4 Portée des variables dans les fonctions

Scope local/scope global: règle LEG


 Règle LEG:
 Je cherche ma variable Localement.
 si je ne la trouve pas, je cherche dans les fonctions Englobantes (fonctions au-dessus de ma
fonction)
 si je ne la trouve pas dans les fonctions Englobantes, je cherche Globalement (dans le module)
 sinon une exception est levée

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.5 Fonction lambda

 les fonctions lambda sont des expressions


 avec un nom

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.5 Fonction lambda

 les fonctions lambda sont des expressions

 dans une liste

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.6 Compréhension de listes, ensembles
et dictionnaires

Création et manipulation
Compréhension de liste
On peut définir une liste en utilisant des mots-clés tels que for, in et if comme on définit un
ensemble en maths 'par compréhension' : ou
NB: contrairement aux ensembles en mathématique, pour Python, une liste est ordonnée et
peut contenir plusieurs fois le même élément.
 la syntaxe est [f(x) for x in ma_liste] correspond à {f (x ) x ma_liste }
 Ainsi, une fois qu’une fonction est définie (numérique ou non), elle peut être appliquée
au nombres de la liste de départ, les images de cette fonction constitueront la liste
d’arrivée.
 On obtient le même résultat en mettant directement une expression en x à la place
de f(x)
 Exemple 1: Liste des carrés des éléments des dix premiers entiers

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.6 Compréhension de listes, ensembles
et dictionnaires

Création et manipulation
Compréhension de liste
 Exemple 2: Liste des carrés des éléments des dix premiers entiers : utilisation d’une fonction

 Filtrage et application d’une fonction


[f(x) for x in liste if Condition(x)] correspond à {f (x ) x liste tel que Condition(x )}

Exemple: Carré des nombres impairs inférieurs à 10

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.6 Compréhension de listes, ensembles
et dictionnaires

Création et manipulation
Compréhension de liste
 Filtrage et application d’une fonction
[f(x) for x in liste if Condition(x)] correspond à {f (x ) x liste tel que Condition(x )} avec
imbrication de boucles for

Exemple:

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.6 Compréhension de listes, ensembles
et dictionnaires

Création et manipulation
Compréhension de dictionnaire
 Exemple 4:

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.7 Expression et Fonction génératrices

Générateurs
Ils fournissent un moyen de générer des exécutions telles qu’elles ne calculent que les valeurs
réellement demandées. Ceci peut s’avérer beaucoup plus efficace (en terme de mémoire) que le
calcul, par exemple, d’une énorme liste par compréhension en une seule fois.

Les générateurs ne peuvent être lus qu’une seule fois


DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.7 Expression et Fonction génératrices

Fonction génératrice
En Python, une fonction est une fonction génératrice lorsque son corps contient le mot clé yield.
Cette fonction ne doit retourner aucune valeur.
yield est un mot clé utilisé en lieu et place de return

En fait, tant qu’on ne touche pas au générateur, il ne se passe rien. Puis, dès qu’on commence à
itérer sur le générateur, le code de la fonction s’exécute.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.7 Expression et Fonction génératrices

Fonction génératrice
En Python, une fonction est une fonction génératrice lorsque son corps contient le mot clé yield.
Cette fonction ne doit retourner aucune valeur.
yield est un mot clé utilisé en lieu et place de return

En fait, tant qu’on ne touche pas au générateur, il ne se passe rien. Puis, dès qu’on commence à
itérer sur le générateur, le code de la fonction s’exécute.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
2. FONCTIONS: UTILISATION AVANCEE 2.8 Autres points sur les fonctions

Attributs par défaut


f.__module__ : affiche le module de rattachement d'une fonction
f.__name__ : affiche le nom de la fonction, par exemple si g = f, g.__name__ donne 'f‘
f.__defaults__ : affiche les valeurs par défaut des arguments optionnels de f

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
UE- PYTHON AVANCÉ

Chapitre III : CONCEPTION DES CLASSES


3.1 Classes, instances et méthodes
3.2 Méthodes spéciales
3.3 Héritage
3.4 Décorateurs

Durée : 24H ( CM :14H, TD :4H, TP :6H)

77
www.kadjo-lambert.c4.fr
3. CONCEPTION DES CLASSES 3.1 Classes, instances et méthodes

Notion de classe
 Une classe est un type permettant de regrouper dans la même structure : les informations
(champs, propriétés, attributs) relatives à une entité ; les procédures et fonctions
permettant de les manipuler (méthodes). Champs et méthodes constituent les membres de
la classe.

 Une classe est un objet


 morceau de code qui lors de l’importation, est transformé en objet.
 lorsque l’objet classe existe, il devient une usine à instances: à chaque fois que
l’objet classe est appelé, cela va créer une nouvelle instance qui aura son propre
espace de nommage
 On peut avoir plusieurs classes dans un module.

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.1 Classes, instances et méthodes

Notion de classe
 Définition d’une classe

Cette classe possède son


espace de nommage

Cette instance possède


son propre espace de
nommage
 et peut accéder à
l’espace de nommage
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.1 Classes, instances et méthodes

Espace de nommage de la classe


 Espace de nommage de la classe
 On peut accéder à l’espace de nommage en utilisant __dict__

Les variables de cet espace de nommage sont appelées les attributs de la classe
NB: Les classes peuvent utiliser (mais pas modifier) les variables définies au niveau principal

 A la création de l’instance, l’espace de nommage est vide

Les variables de cet espace de nommage sont appelées variables d'instance ou


attributs d'instance.
Les instances peuvent utiliser (mais pas modifier) les variables définies au niveau de
DATA SCIENCE INSTITUTE/INP-HB 2019
la classe et les variables définies DrauLambert
niveau principal
KADJO
3. CONCEPTION DES CLASSES 3.1 Classes, instances et méthodes

Espace de nommage de la classe

 Il existe une relation particulière entre la classe et son instance créée


 lorsque l’on appelle un attribut d’une instance, on cherche d’abord dans
l’espace de nommage de l’instance, si on le trouve pas, on le cherche dans
l’espace de nommage de la classe

 Cette relation est déterminée par un attribut de l’instance appelé attribut


class

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.1 Classes, instances et méthodes

Caractéristiques des classes


Les classes et les instances sont des objets mutables

Ici, l’instance a été créée avant la création de l’attribut y


dans la classe. La recherche des attributs dans l’espace
de nommage est faite de manière dynamique (lors de
l’appel de l’attribut sur un objet)
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.1 Classes, instances et méthodes

Caractéristiques des classes


Les classes et les instances sont des objets mutables
x devient un attribut d’instance

z est un attribut d’instance et


non de la classe

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.1 Classes, instances et méthodes

Méthodes
Ce sont des fonctions à l’intérieur des classes qui sont dédiées aux comportements des classes

Cette notation utile


pour appeler
explicitement une
méthode d’une classe
parente redéfinie dans
une classe fille

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.2 Méthodes spéciales

constructeur
 la méthode spéciale __init__
Cette méthode est appelée
automatiquement APRES la création de
l’objet, et contient le code
d’initialisation de l’objet (généralement
une modification des attributs pour leur
donner leur état de départ).

Elle permet donc de contrôler la


création des attributs .

Cet argument est donné


passer à __init__

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.2 Méthodes spéciales

Afficheur d’objet
 la méthode spéciale __str__
Cette méthode permet d’utiliser la
fonction print() pour afficher les
attributs d’une instance.
Cette méthode est automatiquement
appelé par print()

Classe sans la méthode __str__

Classe avec la méthode __str__

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.2 Méthodes spéciales

Surcharge d’opérateurs
 La surcharge permet à un opérateur de posséder un sens différent suivant le type de des
opérandes.
Par exemple, l'opérateur + permet :

Python possède des méthodes de surcharge . On va considérer les opérateurs que l’on
souhaite surcharger comme des méthodes de la classe. Le nom de la méthode
correspondante à un opérateur sera précédé et suivi par un double underscore :
__NomOperateur__
 Si l’opérateur en question est unaire, la méthode n’aura que l’objet courant en
paramètre :
def __NomOperateur__(self):
...
Si l’opérateur en question est binaire, la méthode aura l’objet courant en paramètre
ainsi qu’un autre objet :
def __NomOperateur__(self,other):
DATA SCIENCE INSTITUTE/INP-HB 2019
... Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.2 Méthodes spéciales

Méthodes spéciales
Python possède des méthodes de surcharge pour :
 tous les types (__call__, __str__, ...) ;
 les séquences (__len__, __iter__, ...).
 les opérations numériques (avec obj1 et obj2 , deux instances)

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CONCEPTION DES CLASSES 3.2 Méthodes spéciales

Surcharge d’opérateurs

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CLASSES ET ESPACES DE NOMMAGE 3.3 Héritage

Définition
La relation particulière entre l’objet instance et l’objet classe est appelée héritage.
Permet de se servir d'une classe préexistante pour en créer une nouvelle qui possédera
quelques fonctionnalités différentes ou supplémentaires

Objets Programme

SUPER-CLASSE SUPER-CLASSE class Maclas1 :


(Maclas1) (Maclas2) pass

class Maclas2:
pass
En Python, l'ancêtre
d'une classe est Maclasfille class Maclasfille(Maclas1, Maclas2):
simplement indiqué
def func(self, …):
entre parenthèses
self.x = 10
immédiatement après
le nom de la classe. Il Maclasfille hérite des classes Maclas1 et Maclas2, c-à-d, si un
n'y a pas de mot clé attribut n’est pas trouvé dans l’espace de nommage de
spécifique Maclasfille, on cherche automatiquement dans l’espace de
DATA SCIENCE INSTITUTE/INP-HB 2019
comme extends en Java nommage de chacune de ces deux classes
Dr Lambert KADJO
3. CLASSES ET ESPACES DE NOMMAGE 3.3 Héritage

Définition
Instanciation après héritage

Objets Programme

SUPER-CLASSE SUPER-CLASSE class Maclas1 :


(Maclas1) (Maclas2) pass

class Maclas2:
pass
Maclasfille class Maclasfille(Maclas1, Maclas2):
def func(self, …):
Instance Instance self.x = 10
Moninstanc1 Moninstanc2
Moninstanc1 = Maclasfille()
Moninstanc2 = Maclasfille()
La recherche d’un attribut se fait en remontant
l’arbre d’héritage de bas en haut (des instances
aux super-classes) DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3. CLASSES ET ESPACES DE NOMMAGE 3.3 Héritage

Manipulation
Remontons l’arbre d’héritage

On voit bien les classes instanciées

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CLASSES ET ESPACES DE NOMMAGE 3.3 Héritage

Manipulation
Remontons l’arbre d’héritage

On voit bien les classes dont hérite


notre sous classe

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CLASSES ET ESPACES DE NOMMAGE 3.3 Héritage

Manipulation
On s’aperçoit que c’est la méthode set_x() de
la classe mère qui a été utilisée puisque la
sous-classe n’en possède pas dans son espace
de nommage

On s’aperçoit que la méthode get_x()


utilisée est celle de la sous classe et non
celle de la classe mère.

On peut aussi rajouter des méthodes à une classe de manière dynamique


- dans l’espace de nommage de Maclas1, on a une variable get_x qui
doit référencer un nouvel objet: l’objet f

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CLASSES ET ESPACES DE NOMMAGE 3.3 Héritage

Manipulation
 la méthode __init__ et héritage Il faut appeler explicitement
l’initialisateur de la classe
mère

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
3. CLASSES ET ESPACES DE NOMMAGE 3.3 Héritage

Manipulation
Si on n’appelle pas
 la méthode __init__ et héritage explicitement l’initialisateur
de la classe mère

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
UE- PYTHON AVANCÉ

Chapitre IV : FICHIERS ET SYSTÈMES DE FICHIERS


4.1 Systèmes de fichiers
4.2 Module OS
4.3 Module Glob
4.4 Bibliothèques de manipulation de programmes externes à Python
4.5 Fichiers

Durée : 24H ( CM :14H, TD :4H, TP :6H)

97
www.kadjo-lambert.c4.fr
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.1 Systèmes de fichiers

Chemins et chaînes de caractères


 Lorsque l’on travaille avec le répertoire courant, tous les fichiers créés se retrouvent dans le dossier
dans lequel se trouve l’exécutable de l’interpréteur.
- cependant, si vous lancez un programme Python directement en faisant par exemple un double-clic
dessus, le répertoire courant est celui du programme lancé,

 pour changer le répertoire courant de travail, il faut importer le module os puis utiliser la fonction chdir
(change Directory) de ce module.

NB: N’oubliez pas d’échapper l’antislash afin de l’utiliser tel quel dans le nom du dossier
Pour que cette instruction fonctionne, le répertoire doit exister.

Sous Linux et MACos, c’est plutôt le slash qui est utilisé. On n’a donc pas besoin d’échapper. On peut
aussi l’utiliser sous Windows

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.1 Systèmes de fichiers

Manipulation des noms chemins


Ce module est une bibliothèque dédié aux besoins de gestion de fichiers et de dossiers
 il comporte plusieurs sous modules

Manipulation des noms chemins


Toutes les fonctions de base pour manipuler les noms de chemin sont dans le module os.path.
 os.path.abspath(path) : Retourne le chemin absolu du chemin relatif path donné en
argument. Il permet de simplifier les éventuelles répétitions de séparateurs.
 os.path.basename(path) Retourne le dernier élément du chemin
 os.path.commonprefix(list) : Retourne le chemin commun le plus long de la liste de chemins
 os.path.dirname(path) : Retourne le chemin pour accéder au dernier élément.
 os.path.expanduser(path): Si path est ~ ou ~user, retourne le chemin permettant d’accéder
au dossier personnel de l’utilisateur
 os.path.getaTime(filename) : Retourne la date du dernier accès au fichier [os.stat()]
 os.path.getctime(filename) : Retourne la date du dernier changement de metadonnées du
fichier
 os.path.getmTime(filename) : Retourne la date de la dernière modification du fichier
 os.path.getsize(filename) → Retourne la taille d'un fichier (en octets)
 os.path.join(path1[, path2[, ...]]): Permet de concaténer plusieurs chemins.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.2 Module OS

Manipulation des noms chemins et tests sur les fichiers et dossiers


Manipulation des noms chemins
os.path.normcase(s) : Normalise la casse d'un chemin
os.path.normpath(path) : Normalise le chemin, élimine les doubles barres obliques, etc.
 os.path.realpath(path) : Retourne le chemin path en remplaçant les liens symboliques par
les vrais chemins, et en éliminant les séparateurs excédentaires.
 os.path.split(path): sépare path en deux parties à l’endroit du dernier séparateur : la
deuxième partie contient le fichier ou le dossier final, et la première contient tout le reste
(le chemin pour y accéder). Type retourné est un 2-tuple de chaines de caractères
 samefile(f1, f2) : Teste si deux chemins font référence au même fichier réel
 sameopenfile(fich1, fich2) : Teste si deux objets de fichiers ouverts font référence au
même fichier
Tests sur les fichiers et les dossiers
 os.path.exists(path) : Teste si un chemin existe
os.path.isabs(s) : Teste si un chemin est absolu
os.path.isdir(s) : Teste si le chemin est un dossier
 os.path.isfile(path) : Teste si le chemin est un fichier régulier
os.path.islink(path) : Teste si leDATA
chemin est un lien symbolique
SCIENCE INSTITUTE/INP-HB 2019
os.path.ismount(path) : Teste si le chemin estKADJO
Dr Lambert un point de montage
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.2 Module OS

Manipulation des noms chemins et tests sur les fichiers et dossiers


Exemple de manipulation des noms chemins

NB: On pourra utiliser realpath() ou abspath() avant tout appel à une autre fonction
de chemins, afin de s’assurer que les chemins sont au bon format

NB: Utilisez la fonction help() pour vous renseigner sur les


modules et les fonctions importés
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.2 Module OS

Liste des fichiers et dossiers


Liste des fichiers et des dossiers
 os.listdir(path): Liste tous les dossiers et fichiers qui se trouvent dans path. Les dossiers
. et .. sont automatiquement retirés.
 os.getcwd(): retourne l’adresse du répertoire dans lequel on est en train de travailler («cwd»
pour current working directory).
 os.walk(path): Crée un générateur de triplets (root, dirs, files) dans l'arborescence de path.
Un triplet est généré par répertoire visité. root représente le chemin d'accès du répertoire
visité. dirs est la liste des sous-répertoires du répertoire root et files est la liste des fichiers du
répertoire root.
 Création, suppression , renommage et déplacement dans un dossier
 os.mkdir(path): Crée le dossier à la fin de path. Si l’un des dossiers intermédiaires n’existe pas,
une exception OSError est levée.
 os.makedirs(path) : crée récursivement tous les dossiers qui n’existe pas jusqu’au dossier final
de path (équivalente à un appel récursif à mkdir() ).
 os.remove(path): Supprime le fichier ou le dossier pointé par path.
 os.rename(old, new): Renomme old en new.
 os.chdir (path): Pour se déplacer DATA
dans les répertoires, et donc changer l’adresse du répertoire
SCIENCE INSTITUTE/INP-HB 2019
courant (change directory) Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.3 Module Glob

recherche par motif

On permet de récupérer les dossiers et les fichiers correspondant à un motif.

*: n'importe quelle séquence de caractères


? : n'importe quel caractère
[] : n'importe quel caractère listé entre les crochets

Contient deux méthodes:


 glob.glob(motif) : Liste les dossiers et les fichiers correspondants au motif
 glob.iglob(motif) : Idem que glob mais retourne un itérateur

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.4 Bibliothèques de manipulation de
programmes externes à Python

modules sys: Interaction avec l’interpréteur


 Ce module contient la plupart des informations relatives à l’exécution en cours,
mises à jour par l’interpréteur, ainsi qu’une série de fonctions et d’objets de bas
niveau.
 sys.argv : contient la liste des paramètres d’exécution d’un script. Le premier élément
de la liste est le nom du script et est suivi de la liste des paramètres

 sys.executable: Renvoie le chemin de l’interpréteur Python.

 sys.exc_info()-: Donne des informations sur l’exception en cours, soit le type


d’exception, l’instance de l’exception, et l’objet traceback.
 exit() : Quitte l’interpréteur en levant une exception SystemError. Prend en
paramètre un entier qui sera utilisé comme code de retour fourni au système en
suivant la norme :
• 0 si le programme a fonctionné correctement.
• > 0 en cas d’erreur.
Si un autre type d’objet est fourni, il est affiché et l’interpréteur utilise 0 comme code
de retour

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.4 Bibliothèques de manipulation de
programmes externes à Python

modules sys: Interaction avec l’interpréteur

 sys.modules : Dictionnaire contenant l’ensemble des modules chargés par l’interpréteur


par le biais de directives d’importation. Lorsqu’un module est importé, l’interpréteur se
réfère à ce dictionnaire pour ne pas recharger le module s’il est déjà présent dans la liste
des clés. Ce dictionnaire peut être manipulé à la volée dans un programme

 sys.path: Liste contenant tous les répertoires dans lesquels l’interpréteur recherche des
modules lorsque la directive import est utilisée, ou lorsque des noms de fichiers sont
utilisés sans leur chemin complet. path peut être modifiée à la volée dans un
programme.
 sys.platform: Informe sur le système d’exploitation. Il est plus précise que à os.name
 stdin, stdout et stderr: Objets fichiers pointant respectivement sur l’entrée standard, la
sortie standard et la sortie standard pour les erreurs

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.4 Bibliothèques de manipulation de
programmes externes à Python

module subprocess
 Ce module, introduit à la version 2.4 de Python, offre des fonctions de très haut niveau,
permettant de créer de nouveaux processus. L’objectif de subprocess est de remplacer à
terme la série des fonctions popen*() et spawn*() , et autres créateurs de processus
enfants, pour fournir une interface unifiée plus simple d’utilisation et plus souple.
 subprocess.call(*args, **kwargs) : Lance sur le système une commande avec des
arguments, attend que la commande s’achève, et renvoie le code de retour. Équivalente
à os.system()

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.4 Bibliothèques de manipulation de
programmes externes à Python

module subprocess
 Sous Windows, l’option /c ferme l’invite après la fin de l’exécution de la commande

 subprocess.run(["cmd"]) : ouvre l’invite de commande de Windows

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


En python, création et manipulation d'un fichier se font par l'intermédiaire d'un objet
particulier, appelé objet fichier, généré par la fonction :

objet_fichier = open(nom_du_fichier, mode d'accès, encodage)

Les paramètres sont des chaînes de caractères:


nom_du_fichier est le chemin (absolu ou relatif) menant au fichier à ouvrir avec son
extension ;
 mode d'accès peut être:
 'w' : (write) ouverture pour écriture seule. Lorsque le fichier n'existe pas, il est créé dans le
répertoire courant ; lorsque le fichier existe il est écrasé
 'a' : (append) ouverture pour écriture seule. Lorsque le fichier n'existe pas il est créé dans
le répertoire courant ; lorsque le fichier existe les données écrites le seront à la suite.
 'r' : (read) ouverture pour lecture seule. Le ficher doit exister dans le répertoire courant.
 '+' : ouverture pour lecture et écriture. Le fichier doit exister.
 On peut ajouter à tous ces modes, le signe b pour ouvrir le fichier en mode binaire.
 encodage: utilisez utf-8

NB: La fonction open est disponible sans avoir besoin de rien importer.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


 Il faut fermer un fichier après l'avoir ouvert.
Si d'autres applications, ou d'autres morceaux de votre propre code, souhaitent accéder à
ce fichier, ils ne pourront pas car le fichier sera déjà ouvert.
 surtout vrai en écriture
 Une fois la lecture et l‘écriture dans le fichier terminés, on referme le fichier avec
l'instruction :
objet fichier.close()
 Un objet-fichier admet les méthodes :
Lorsque ouvert en écriture :
 write() écrit une chaine de caractères en fin de fichier ouvert en écriture.
 writelines() écrit une liste de chaînes de caractères en les concaténant.

lorsque ouvert en lecture :


 read() lit l'intégralité du fichier.
 readline() lit la ligne suivante.
 readlines() retourne une liste contenant toutes les lignes du fichier.

On peut aussi parcourir le fichier ligne après ligne :


for ligne in objet_fichierDATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Definition
Les fichiers sont des objets itérateurs
 on peut donc exploiter toute la puissance des itérateurs avec les fichiers

Avec la touche
Tabulation, on obtient
un menu déroulant
comportant tous les
fichiers et répertoires de
la partition saisie

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Definition
 On ouvre ici, un fichier
existant sur le disque

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Definition

 le caractère « r »
préfixant le nom
permet de ne pas
interpréter le
caractère « \ »

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


 Pour stocker des données numériques :
 On peut le faire en les stockant sous forme de chaînes de caractères séparées par un
séparateur : le retour à la ligne '/n' par exemple.
Il faut les convertir en entier après les avoir lus

Version
readline()

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


Le mot-clé with
Ce mot-clé permet de fermer un fichier à la fin du bloc d’instructions.
 il permet de créer un "context manager" (gestionnaire de contexte) qui vérifie que le
fichier est ouvert et fermé, même si des erreurs se produisent pendant le bloc.

with open(mon_du_fichier, mode_ouverture) as variable:


# Opérations sur le fichier

Le mot-clé with, prélude au bloc dans lequel on va manipuler notre fichier.
 open qui va renvoyer un objet TextIOWrapper (notre fichier).
Le mot-clé as déjà vu dans le mécanisme d'importation signifie toujours la même
chose : « en tant que ».
 variable: la variable qui contiendra notre objet. Si la variable n'existe pas, Python
la crée.

NB: Vous pouvez appeler mon_fichier.closed pour vérifier que le fichier est refermé.
Si le fichier est fermé,mon_fichier.closed vaudra True.
Il est inutile, par conséquent, de fermer le fichier à la fin du bloc with
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


Enregistrer un objet dans un fichier
Il nous faut naturellement d'abord importer le module pickle.

import pickle

On va ensuite utiliser deux classes incluses dans ce module : la classe Pickler et la
classe Unpickler.
Pour créer notre objet Pickler, nous allons l'appeler en passant en paramètre le fichier
dans lequel nous allons enregistrer notre objet.

score = { "joueur 1": 5, "joueur 2": 35, "joueur 3": 20, "joueur 4": 2 }
with open('donnees', 'wb') as fichier:
mon_pickler = pickle.Pickler(fichier)
mon_pickler.dump(score)

NB: On ouvre le fichier données en mode d'écriture binaire.


 Pour enregistrer plusieurs objets, on appelle de nouveau la méthode dump avec les
objets à enregistrer. Ils serontDATA
ajoutés
SCIENCE dans le fichier2019
INSTITUTE/INP-HB dans l'ordre où vous les enregistrez.
Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


Récupérer nos objets enregistrés
1. Créer l’objet.
2. À sa création, on lui passe le fichier dans lequel on va lire les objets.
3. Puisqu'on va lire, on change de mode, on repasse en mode r, et même rb puisque le
fichier est binaire.
4. Pour lire l'objet dans le fichier, il faut appeler la méthode load de depickler. Elle renvoie
le premier objet qui a été lu (s'il y en a plusieurs, il faut l'appeler plusieurs fois).

with open('donnees', 'rb') as fichier:


mon_depickler = pickle.Unpickler(fichier)
score_recupere = mon_depickler.load() # Lecture des objets contenus dans le fichier...

Et après cet appel, si le fichier a pu être lu, dans la variable score_recupere, vous récupérez
votre dictionnaire contenant les
DATA scores
SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


Exemple avec les classes d’objets

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


Exemple avec les classes d’objets

Possibilité de stocker des objets


de différents types (entier,
flottant, liste, etc.) et de les
restituer dans le même type as de DATA SCIENCE INSTITUTE/INP-HB 2019
transtypage) Dr Lambert KADJO
4. FICHIERS ET SYSTÈMES DE FICHIERS 4.5 Fichiers

Manipulations des fichiers textes


Exemple avec les classes d’objets

DATA SCIENCE INSTITUTE/INP-HB 2019


Dr Lambert KADJO

Vous aimerez peut-être aussi