This course will introduce the core data structures of the Python programming language. We will move past the basics of procedural programming and explore how we can use the Python built-in data structures such as lists, dictionaries, and tuples to perform increasingly complex data analysis.
Objectif général : Acquérir les connaissances nécessaires à la programmation avec le langage Python
Objectifs opérationnels :
- Mémoriser des données primitives
- Traiter des données
- Communiquer avec l’extérieur
- Contrôler le flux d’exécution des instructions
- Mémoriser des données composites
- Découper et réutiliser du code
Dans ce cours, on découvre comment lire et écrire des fichiers à l'aide de Python. Il est possible de créer des fichiers texte ou des fichiers binaires. Pour manipuler un fichier, il faut d'abord l'ouvrir, puis on peut faire les opérations et enfin on doit le refermer.
Objectif général : Acquérir les connaissances nécessaires à la programmation avec le langage Python
Objectifs opérationnels :
- Mémoriser des données primitives
- Traiter des données
- Communiquer avec l’extérieur
- Contrôler le flux d’exécution des instructions
- Mémoriser des données composites
- Découper et réutiliser du code
Dans ce cours, on découvre comment lire et écrire des fichiers à l'aide de Python. Il est possible de créer des fichiers texte ou des fichiers binaires. Pour manipuler un fichier, il faut d'abord l'ouvrir, puis on peut faire les opérations et enfin on doit le refermer.
Ce cours aborde la gestion d'erreurs en programmation, c'est-à-dire comment gérer les situations où une erreur se produit. Après avoir présenté le principe des spécifications et de la programmation défensive avec l'instruction assert, ce cours présente l'instruction try/except qui permet de capturer des erreurs. Enfin, le cours termine en présentant comment définir ses propres erreurs et les générer avec l'instruction raise.
Ce premier cours avancé sur Python concerne les deux structures de données avancées que sont les ensembles et les dictionnaires. Ces derniers sont notamment utilisés pour construire des bases de données orientées document.
Ce premier cours présente les notions d'objet et de classe, et le lien entre elles. Il présente aussi le premier concept clé de la programmation orientée objet, à savoir l'encapsulation des données. Les exemples sont fournis dans plusieurs langages (Python, C#, Java, C++ et PHP).
C'est le chapitre 1 sur le langage Python qui est une introduction à ce langage.
Si vous avez des remarques ou des suggestions pour l’améliorer n’hésitez pas à m’écrire via ce courriel:
pr.azizdarouichi@gmail.com
Bonne lecture.
Le C++ est l'un des langages de programmation les plus utilisés actuellement (très populaire). Il a été crée en 1983 par Bjarne Stroustrup, un informaticien originaire du Danemark. Le C++ est une évolution du langage C avec plusieurs nouveautés. Il s'agit de concepts de programmation poussés comme la programmation orientée objet.
Ce cours intitulé « Programmation orientée objet en C++ » permet de vous apprendre les concepts de base de la programmation orientée objet; les notions de base du langage C++. Il vous permet, également, d'apprendre a implémenter des programmes orientées objet en C++.
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
Cours en C++ de la programmation procédurale à la POO.
Partie 1: La Programmation Procédurale.
Partie 2: La Programmation Orientée Objet.
Partie 3: Les Exceptions, Entrées/Sorties, Structures, Unions, Énumérations…
Partie 4: Les interfaces Graphiques avec Qt.
Si vous avez des remarques ou des suggestions afin d'améliorer ce support du cours merci de me contacter via pr.azizdarouichi@gmail.com
Objectif général : Concevoir une base de données
Objectifs opérationnels :
- Comprendre les différents concepts entourant les BD
- Comprendre les concepts associés aux BD relationnelles
- Établir un dictionnaire de données (DD)
- Structurer les données du DD
- Construire un Modèle Conceptuel des Données (MCD)
- Transformer un MCD en Modèle logique de données (MLD)
- Normaliser un MLD
Support Dot Net avec C#. Ce cours traite les points suivants :
- Architecture .Net
- Les bases de C#
- Objet et Classe
- Héritage
- Encapsulation
- Polymorphisme
- Les exceptions
- Les entrées sorties
- Les interfaces graphiques
- Le multi Threading
- Programmation réseaux (Sockets et DataGram)
- Accès aux bases de données
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Ce cours explore les bases de la programmation en Python, en mettant l'accent sur l'utilisation des collections intégrées telles que listes, tuples, ensembles et dictionnaires pour stocker, organiser et manipuler les données. Une introduction succincte à NumPy est également incluse, fournissant des compétences avancées pour la manipulation de tableaux et d'opérations numériques, préparant ainsi les participants à des applications plus avancées dans la science des données et le traitement numérique.
Ce cours aborde la gestion d'erreurs en programmation, c'est-à-dire comment gérer les situations où une erreur se produit. Après avoir présenté le principe des spécifications et de la programmation défensive avec l'instruction assert, ce cours présente l'instruction try/except qui permet de capturer des erreurs. Enfin, le cours termine en présentant comment définir ses propres erreurs et les générer avec l'instruction raise.
Ce premier cours avancé sur Python concerne les deux structures de données avancées que sont les ensembles et les dictionnaires. Ces derniers sont notamment utilisés pour construire des bases de données orientées document.
Ce premier cours présente les notions d'objet et de classe, et le lien entre elles. Il présente aussi le premier concept clé de la programmation orientée objet, à savoir l'encapsulation des données. Les exemples sont fournis dans plusieurs langages (Python, C#, Java, C++ et PHP).
C'est le chapitre 1 sur le langage Python qui est une introduction à ce langage.
Si vous avez des remarques ou des suggestions pour l’améliorer n’hésitez pas à m’écrire via ce courriel:
pr.azizdarouichi@gmail.com
Bonne lecture.
Le C++ est l'un des langages de programmation les plus utilisés actuellement (très populaire). Il a été crée en 1983 par Bjarne Stroustrup, un informaticien originaire du Danemark. Le C++ est une évolution du langage C avec plusieurs nouveautés. Il s'agit de concepts de programmation poussés comme la programmation orientée objet.
Ce cours intitulé « Programmation orientée objet en C++ » permet de vous apprendre les concepts de base de la programmation orientée objet; les notions de base du langage C++. Il vous permet, également, d'apprendre a implémenter des programmes orientées objet en C++.
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
Cours en C++ de la programmation procédurale à la POO.
Partie 1: La Programmation Procédurale.
Partie 2: La Programmation Orientée Objet.
Partie 3: Les Exceptions, Entrées/Sorties, Structures, Unions, Énumérations…
Partie 4: Les interfaces Graphiques avec Qt.
Si vous avez des remarques ou des suggestions afin d'améliorer ce support du cours merci de me contacter via pr.azizdarouichi@gmail.com
Objectif général : Concevoir une base de données
Objectifs opérationnels :
- Comprendre les différents concepts entourant les BD
- Comprendre les concepts associés aux BD relationnelles
- Établir un dictionnaire de données (DD)
- Structurer les données du DD
- Construire un Modèle Conceptuel des Données (MCD)
- Transformer un MCD en Modèle logique de données (MLD)
- Normaliser un MLD
Support Dot Net avec C#. Ce cours traite les points suivants :
- Architecture .Net
- Les bases de C#
- Objet et Classe
- Héritage
- Encapsulation
- Polymorphisme
- Les exceptions
- Les entrées sorties
- Les interfaces graphiques
- Le multi Threading
- Programmation réseaux (Sockets et DataGram)
- Accès aux bases de données
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Ce cours explore les bases de la programmation en Python, en mettant l'accent sur l'utilisation des collections intégrées telles que listes, tuples, ensembles et dictionnaires pour stocker, organiser et manipuler les données. Une introduction succincte à NumPy est également incluse, fournissant des compétences avancées pour la manipulation de tableaux et d'opérations numériques, préparant ainsi les participants à des applications plus avancées dans la science des données et le traitement numérique.
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)Tunisie collège
Ministère de l’Éducation de Tunisie
Direction Générale des Programmes
et de la Formation Continue
Le langage de programmation choisi pour implémenter les solutions algorithmiques est le
langage de programmation Python.
Quelques pages intéressantes sur Python avec des exemples, et en particulier en 1.4 le programme de calcul d'une intégrale par la méthode des rectangles, des trapèzes et de Simpson.
(1) Ce document provient de : https://www.apprendre-en-ligne.net/pymath/support.pdf (au 27 mars 2019)
(2) Il est extrait du site : https://www.apprendre-en-ligne.net/index.php
JAVA n'a plus de secret pour vous. Créer un projet, le passer de maven à graddle, enlever Spring, remplacer Guava par les API de Java 8 vous le faites sans même réfléchir. Vous avez essayé Python et la ce n'est plus la même affaire. Passé le "Hello World", quand il a fallu faire un projet de la vrai vie le courage vous a quitté. Cette conférence donnera les clefs pour bien débuter en Python quand on est un dev JAVA. Python 2 ou Python 3, choix d'un IDE, outils de build, contrôle de code, gestion des dépendances, choix des librairies, documentation, ressources indispensables à connaitre...
Open Source School - Bachelor 3
Supports de cours Linux Administrateur
Ce support est sous licence Creative Commons (CC BY-SA 3.0 FR)
Attribution - Partage dans les Mêmes Conditions 3.0 France
Plan :
Programmation Bash Avancée
* Expressions logiques & boucles
* Paramètres d’entrée et valeurs de retour
* Environnements d'exécution
* Expressions régulières
Gestion des utilisateurs et des groupes
* L'utilisateur et le groupe POSIX
* Gestion des comptes
Administration du système
* Les logs et les mails
* Fichiers de configuration du système
* La gestion des paquets et des mises à jour
* Les services
* Exécution automatique de tâches (cron, at, ...)
* Localisation et internationalisation
TCP/IP et configuration du réseau
* Adressage IP et routage
* Protocoles réseaux (ICMP, TCP, UDP, …) et ports
* Configuration réseau (adresses, hooks, vlan, ...)
* Les outils de l'administrateu : ping, netstat, arp, netcat, traceroute, nmap, ...
Services système et Sécurité
* Permissions du système de fichiers, quotas utilisateurs
* Sécurité réseau
Iptables
OpenSSH et fail2ban
Authentification du serveur et des utilisateurs
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
Le langage C++ a toujours la réputation d’un langage complexe, demandant une rigueur de tous les instants et qui peut en rebuter plus d’un. Mais avec l’arrivée de la nouvelle norme C++11 et de son intégration dans Visual Studio 11 (et intégration partielle dans Visual Studio 2010), elle permet comme le souligne Herb Sutter, d’écrire désormais du code "Clean, Safe and Fast", nous passons à l'ère du C++ moderne.
Novascope Télécoms et Réseaux Informatiques en BtoB 2023Enov
Depuis 1996, nous mesurons la digitalisation des entreprises françaises grâce à notre observatoire Novascope Télécoms et Réseaux informatiques en B2B. Découvrez quelques résultats exclusifs de la vague 2023.
Dans un contexte où la transmission et l'installation d'agriculteurs sont des enjeux cruciaux pour la profession agricole, de nouveaux agriculteurs s'installent chaque année et, parmi eux, certains Bac+5 ou plus. Les cursus des écoles d'ingénieurs n'ont pas vocation à former de futurs agriculteurs. Pourtant, certains apprenants ayant suivi ces cursus BAC + 5, qu'ils soient ou non issus du milieu agricole, tentent l'aventure de l'entrepreneuriat agricole. Qui sont-ils ? Quelles sont leurs motivations et visions ? Comment travaillent-ils ?
Webinaire Qui sont les jeunes installés avec un bac +5 ?
Python For Data Science - French Course
1. 1
Programmation python
HAYTAM EL YOUSSFI
elyoussfihaytam@gmail.com
Web Developer & Junior Data Scientist
Haytam EL YOUSSFI Haytam222 @HaytamYoussfi haytam.elyoussfi haytam.elyoussfi2018
2. 2021-2022
H.EL YOUSSFI Programmation python 2
Plan du cours
• Introduction à Python
• Structures de contrôle
• Conteneurs standards
• Fonctions
• Modules
• Programmation orientée objet
3. Introduction à python
• Langage Python
• Types et opérations de base
2021-2022
H.EL YOUSSFI Programmation python 3
4. 4
Python
Python est un langage de script:
• Développé depuis 1989 par Guido van Rossum
• Orienté objet (mais peut être utilisé quasi non-"objectivement")
• Open Source et gratuit
• Portable
• Simple à comprendre/ écrire
• Versions:
Version 1.0 : 1990
Version 2.0 : 2000
Version 3.0 : 2008
Introduction à python Langage python
2021-2022
H.EL YOUSSFI Programmation python 4
5. Python
Avantages : Interpréteur permettant de tester n'importe quel petit bout de
code, compilation transparentes
Inconvénients : peut être lent
Que peut-on faire avec Python ?
Développement Web: Django, Pyramid, Zope, Plone,...
Calcul Scientifique: Numpy, Scipy, sage, ...
Représentation graphique: gnuplot, matplotlib, VTK, ...
GUIs: TkInter, PyGtk, PyQt,...
Manipulation d’images: Pillow, OpenCV-Python,...
Bases de données: MySQL, PostgrSQL, Oracle, ...
Introduction à python Langage python
Code Source ByteCode resultat
Compilateur Interpreteur
2021-2022
H.EL YOUSSFI Programmation python 5
6. Règles d’écritures
• La casse est significative
• Le typage des variables est dynamique
• Une instruction doit commencer en première colonne
• L’indentation est obligatoire pour marquer les blocks
• Si une instruction dépasse la taille d’une ligne, il est possible soit
d’écrire un caractère de continuation ou de mettre l’instruction entre
parenthèses
Exemple
Introduction à python Langage python
if (a == b and c == d and
d==e) :
print("ok ")
if a == b and c == d and
d==e :
print("ok ")
2021-2022
H.EL YOUSSFI Programmation python 6
7. Opérations de base
• Affectation
Introduction à python Opérations de base
2021-2022
H.EL YOUSSFI Programmation python 7
8. Opérations de base
• Opérateurs arithmétiques
• Opérateurs relationnels
Introduction à python
x + y Addition
x - y Soustraction
x * y Multiplication
x / y Division
x // y Division entière
x % y Modulo
x ** y Puissance
x==y Egal
x!=y Différent
x<y Inférieur
x<=y Inférieur ou égal
x>y Supérieur
x>=y Supérieur ou égal
• Exemples
print(3*2+1) -> 7
print(3*(2+1)) -> 9
print( round(3.75)) -> 4
print(round(3.75,1) -> 3.8
print(3/5) -> 0.6
Print(3//5) -> 0
num_1 = 3
num_2 = 2
Print(num_1>num_2) -> true
not x Négation
x or y Ou-logique
x and y Et-logique
• Opérateurs logiques
Opérations de base
2021-2022
H.EL YOUSSFI Programmation python 8
9. Chaines de caractères
Introduction à python
Synatxe Sémantique
len(s) Longueur de la chaîne s
s1 + s2 Concaténation de s1 et s2
s * n Répétition ’n’ fois de la chaîne ’s’
s in t Teste si la chaîne ’s’ est présente dans ’t’.
s[n] Extraction du n-ième caractère en partant du début de la chaîne
s[-n] Extraction du n-ième caractère en partant de la fin de la chaîne
s[n:m] Extraction des caractères se trouvant entre le n-ième et le m-ième
s[:n] Extraction des ’n’ premiers caractères de la chaîne
s[n:] Extraction des derniers caractères de la chaîne à partir du n-ème
s[-n:] Extraction des caractères des ’n’ derniers caractères de la chaîne
• Encadrées par des apostrophes (' ') ou des guillemets (" ")
• Les opérateurs sur les chaînes permettent de concaténer, filtrer ou extraire
des parties des chaînes de caractères entres elles
Opérations de base
2021-2022
H.EL YOUSSFI Programmation python 9
10. Chaines de caractères
Introduction à python
• Exemple
txt="cours python"
print(len(txt)) #12
print(txt[2]) #u
print(txt[-2]) #o
print(txt[2:7]) #urs p
print(txt[:7]) #cours p
print(txt[4:]) #s python
print(txt[-4:]) #thon
txt2="math"
print(txt+txt2) #cours pythonmath
txt2=txt*2
print(txt2) #cours pythoncours python
print("ou" in txt) #True
Opérations de base
2021-2022
H.EL YOUSSFI Programmation python 10
11. Conversion entre types
Introduction à python
• La conversion de types permet de passer d’un type à l’autre
• La règle générale est de se servir du nom du type avec des parenthèses
• Exemple
Syntaxe Sémantique
bool(var) Converti ’var’ en un booléen
int(var) Converti ’var’ en un entier
float(var) Converti ’var’ en un flottant
str(var) Converti ’var’ en une chaîne de caractères
Opérations de base
2021-2022
H.EL YOUSSFI Programmation python 11
12. print() / input()
Introduction à python
• print(msg) : imprime à l’écran une chaîne de caractères donnée en
argument
• input(msg): permet de récupérer une chaîne de caractères tapée par
l’utilisateur (retourne une chaine)
• Exemples
Opérations de base
2021-2022
H.EL YOUSSFI Programmation python 12
14. Les blocs
Structures de contrôle Structures conditionnelles
• Un bloc d’instructions est une unité de
programmation qui regroupe une
séquence ordonnée d’instructions qui
s’exécutent les unes après les autres
• Les instructions qui se trouvent au même
niveau d’indentation font parti d’un
même bloc
• Pas de délimiteurs (pas de { et de })
• Tout ce qui suit un caractère ’#’ est
considéré comme un commentaire et est
ignoré
2021-2022
H.EL YOUSSFI Programmation python 14
16. Les structures conditionnelles
Structures de contrôle Structures conditionnelles
• Exemple2
• Remarque
Il n’existe pas de switch en python et par conséquent on peut utilise if …
elif…else
2021-2022
H.EL YOUSSFI Programmation python 16
17. Conditions
Structures de contrôle Structures conditionnelles
Types évaluant à faux :
• None
• False
• Tous les zéros : 0 , 0. , 0j
• Les listes/dictionnaires/chaines vides : [] , () , '' '', {}
• Tout objet dont la méthode bool() retourne False
• Tout objet dont la méthode len() retourne 0
Exemple
condition = 5 -> True
condition = None -> False
condition = 0 -> False
condition = ' ' -> False
condition = [] -> False
condition = () -> False
condition = {} -> False
2021-2022
H.EL YOUSSFI Programmation python 17
18. Boucle for
Structures de contrôle Structures itératives
• En Python, for est un itérateur sur des collections d’objets. Il est utilisé pour
parcourir, dans l’ordre s’il y en a un, les éléments de la collection
• Syntaxe:
iterable est souvent:
range(debut,fin,[step=1])
une liste
n’importe quel objet itérable
Remarque : la fonction range(start, stop, step)permet de créer une
collection de nombres pour itérer dessus
• Exemples
Résultats
for elem in iterable :
Instructions
2021-2022
H.EL YOUSSFI Programmation python 18
19. Boucle for
Structures de contrôle Structures itératives
• Exemples
2021-2022
H.EL YOUSSFI Programmation python 19
20. Boucle while
Structures de contrôle Structures itératives
• Syntaxe
break : sort de la boucle sans
passer par else
continue : remonte au début de la boucle
pass : ne fait rien
else : lancé si et seulement si la boucle se termine normalement
• Exemple
Boucle infinie
while <condition1>:
<blocs d'instructions 1>
if <condition2>: break
if <condition3>: continue
else:
<blocs d'instructions 2>
while <condition1>:
<blocs d'instructions 1>
2021-2022
H.EL YOUSSFI Programmation python 20
21. Boucle while
Structures de contrôle Structures itératives
• Exemples
2021-2022
H.EL YOUSSFI Programmation python 21
23. Listes
Conteneurs standards Listes
• Les listes servent à stocker des collections ordonnées d’éléments avec
possibilité de les étendre ou de les manipuler facilement
Initialisation
• L1=[]; L2=list() #Listes vides
• L1= [1, 2, 3, 4, 5]; L2= ['point', 'triangle', ‘rectangle']
• L=[1, 4, ‘ali', 4, ‘laila', ['point', 6]]
• L=[3]*6 # L=[3, 3, 3, 3, 3, 3]
Concaténation
2021-2022
H.EL YOUSSFI Programmation python 23
24. Manipulation des listes
Conteneurs standards Listes
Syntaxe Sémantique
len(L) Nombre d’éléments dans la liste
del(L[n]) Détruit l’élément ‘n’ de la liste ‘L’
L1 + L2 Concaténation de ‘L1’ et ‘L2’
L * n Répétition ’n’ fois de la liste ‘L’
L[n] Extraction du n-ième élément en partant du début de la liste
L[-n] Extraction du n-ième élément en partant de la fin de la liste
L[n:m] Extraction des éléments qui sont entre ‘n’ et ‘m’
L[:n] Extraction des ‘n’ premiers éléments de la liste
L[n:] Extraction des éléments ‘n’ à la fin de la liste
L[-n:] Extraction des ‘n’ derniers éléments de la liste
2021-2022
H.EL YOUSSFI Programmation python 24
25. Manipulation des listes
Conteneurs standards Listes
Syntaxe Sémantique
L.clear() Vide la liste ‘L’
L.copy() Renvoie une copie de la liste ‘L’
L.append(e) Ajoute l’élément 'e' à la fin de la liste 'L'
L.insert(n, e) Insère l’élément 'e' à la position 'n' dans la liste 'L'
L.sort() Trie la liste L
L.reverse() Inverse la liste L
L.index(e) Rechercher l’élément 'e' dans la liste L
L.remove(e) Retirer l’élément 'e' de la liste L
L.pop() Retirer le dernier élément de la liste L
L.pop(ind) Retirer l’élément qui est dans la position ' ind' de la liste L
2021-2022
H.EL YOUSSFI Programmation python 25
26. Exemples
Conteneurs standards Listes
cours=['Hist','Math','Phy','Ar','Sc']
print(cours) #['Hist', 'Math', 'Phy', 'Ar', 'Sc']
print(len(cours)) #5
print(cours[1]) #Math
print(cours[-2]) # Ar
print(cours[1:3]) #['Math', 'Phy']
print(cours[:2]) #['Hist', 'Math']
print(cours[2:]) #['Phy', 'Ar', 'Sc']
cours.append('Fr'); print(cours) #['Hist', 'Math', 'Phy', 'Ar', 'Sc', 'Fr']
p=cours.pop(); print(cours) #['Hist', 'Math', 'Phy', 'Ar', 'Sc']
print(p) #Fr
cours.insert(1,'Art');
print(cours) # ['Hist', 'Art', 'Math', 'Phy', 'Ar', 'Sc']
cours=['Hist','Math','Phy','Ar']
cours2=['Ang','Fr']
cours.insert(1,cours2); print(cours) # ['Hist', ['Ang', 'Fr'], 'Math', 'Phy', 'Ar']
#insertion en tant que liste et non en tant que valeurs
cours.remove(cours2); print(cours) # ['Hist', 'Math', 'Phy', 'Ar']
cours.extend(cours2); print(cours) # ['Hist', 'Math', 'Phy', 'Ar', 'Ang', 'Fr']
2021-2022
H.EL YOUSSFI Programmation python 26
28. Exemples
Conteneurs standards Listes
cours =['Hist','Math','Phy']
for matiere in cours: print(matiere) #Hist Math Phys
for i,matiere in enumerate(cours): #
print(i,matiere)
for i,matiere in enumerate(cours,start=1): #
print(i,matiere)
L=[4,2,6,1]
L.sort(reverse=True)
print(L) # [6, 4, 2, 1]
print(min(L)) #1
print(sum(L)) #13
L=[2,5,7]
L1=3*L; print(L1) # [2, 5, 7, 2, 5, 7, 2, 5, 7]
L2=[3*x for x in L]; print(L2) # [6, 15, 21]
print([3*x for x in L if x>2]) # [15, 21]
2021-2022
H.EL YOUSSFI Programmation python 28
29. Suppression d’un élément
Conteneurs standards Listes
• remove: Retire la première occurrence d’un élément de la liste
Exemple: L=[1, 2, 4, 2]
L.remove(2)
print(L) # [1, 4, 2]
• del: supprime un élément de la liste à partir de son indice
Exemple: L=[1, 2, 4, 2]
del(L[2])
print(L) #[1, 2, 2]
• pop: supprime un élément à partir de son indice et le retourne
Exemple: L=[1, 2, 4, 2]
x=L.pop(2)
print(x) #4
print(L) # [1, 2, 2]
2021-2022
H.EL YOUSSFI Programmation python 29
30. Copie d’une liste
Conteneurs standards Listes
L =['Hist','Math','Phy','Ar','Sc']
T=L
print(L) #['Hist', 'Math', 'Phy', 'Ar', 'Sc']
print(T) #['Hist', 'Math', 'Phy', 'Ar', 'Sc']
T[2]="Fr"
print(T) #['Hist', 'Math', 'Fr', 'Ar', 'Sc']
print(L) #['Hist', 'Math', 'Fr', 'Ar', 'Sc']
L =['Hist','Math','Phy','Ar','Sc']
T=L[:] #T=L.copy()
T[2]="Fr"
print(T) #['Hist', 'Math', 'Fr', 'Ar', 'Sc']
print(L) #['Hist', 'Math', 'Phy', 'Ar', 'Sc']
Remarque:
Les listes sont mutables: ils peuvent subir des modifications
2021-2022
H.EL YOUSSFI Programmation python 30
31. Tuples
Conteneurs standards Tuples
• Ils permettent de grouper des éléments de différentes natures pour créer une
structure qui les englobe
Initialisation
• T1=(); T2=tuple() # Tuples vides
• T= 'a', 'b', 'c', 'd' # T=('a', 'b', 'c', 'd')
• T= ('a', 'b', 'c', 'd')
• T= (1, 2)*3 # T=(1, 2, 1, 2, 1, 2)
Concaténation
T1,T2=(1,2),("ali","laila")
print("T1=",T1) # T1= (1, 2)
print("T2=",T2) # T2= ('ali', 'laila')
print("T1+T2=",T1+T2) # T1+T2= (1, 2, 'ali', 'laila')
2021-2022
H.EL YOUSSFI Programmation python 31
32. Tuples
Conteneurs standards Tuples
• Les tuples ne sont pas modifiables: Il sont immuables
Exemple
t =('Hist','Math','Phy','Ar','Sc')
print(t) #('Hist', 'Math', 'Phy', 'Ar', 'Sc')
print(t[2]) #Phy
print(t[2:]) #('Phy', 'Ar', 'Sc')
print(t[-2]) #Ar
t2=t
print(t2) #('Hist', 'Math', 'Phy', 'Ar', 'Sc')
t2[0]='Art' #Error: 'tuple' object does not support item assignment
print(t2)
print(t)
2021-2022
H.EL YOUSSFI Programmation python 32
33. Ensembles
Conteneurs standards Ensembles
• Un ensemble est une collection d'objets sans répétition et sans ordre (donc
sans numérotage). Ce n'est pas une séquence
• On les note comme en maths avec des accolades {...}. Les éléments sont de
types quelconques
Initialisation
• S=set() # Ensembles vides
• S={"rouge","vert","noir"}
• S= {5,'foo',(3,-2),7.4}
Remarque
• S={} crée un dictionnaire et non pas un ensemble
Opérations
• Les seules opérations que l’on peut faire sur les ensembles sont toutes les
opérations ensemblistes (appartenance, intersection, union, …)
2021-2022
H.EL YOUSSFI Programmation python 33
34. Opérations
Conteneurs standards Ensembles
Syntaxe Sémantique
len(s) Taille de l’ensemble 's'
s.add(e) Ajoute 'e' à 's'
s.remove(e) Retire 'e' de 's' (erreur si ’e’ ∉ 's')
s.discard(e) Retire 'e' de 's'
s.clear() Vide l’ensemble 's'
s1 | s2 Union de ’s1’ et ’s2’
s1 & s2 Intersection de ’s1’ et ’s2’
s1 ^ s2 Différence exclusive de ’s1’ et ’s2’
Syntaxe Sémantique
e in s 'e' ∈ 's'
e not in 'e' ∉ 's'
s1 == s2 's1' égal 's2'
s1 != s2 's1' différent de 's2'
s1 < s2 's1' est inclus (strict) dans 's2'
s1 <= s2 's1' est inclus ou égal à 's2'
s1 > s2 ’s2’ inclus (strict) dans 's1'
s1 >= s2 's2' inclus ou égal à 's1'
s1.issubset(s2) 's1' inclus dans 's2'
s1.issuperset(s2) 's1' inclus 's2'
2021-2022
H.EL YOUSSFI Programmation python 34
35. Exemples
Conteneurs standards Ensembles
color1={'rouge','vert','bleu','noir'}
print(color1) #{'bleu', 'noir', 'vert', 'rouge'} Affichage change à
chaque exécution
color1={'rouge','vert','bleu','noir','vert'}
print(color1) #{'bleu', 'noir', 'vert', 'rouge'} n’accepte pas les
doublons
print(color1[1]) #Error: 'set' object does not support indexing
print(len(color1)) #4
print('vert' in color1) #True
print('belu' not in color1) #True
color2={'rose','vert'}
c=color1|color2; print(c) #{'bleu', 'rose', 'vert', 'noir', 'rouge'}
print(color1.union(color2)) #{'bleu', 'rose', 'vert', 'noir', 'rouge'}
c=color1 & color2; print(c) #{'vert'}
print(color1.intersection(color2)) #{'vert'}
print(color1^color2) #{'bleu', 'rose', 'noir', 'rouge'}
print(color2.issubset(color1)) #False
print({'rouge','bleu'}.issubset(color1)) #True
2021-2022
H.EL YOUSSFI Programmation python 35
36. Dictionnaires
Conteneurs standards Dictionnaires
• Un dictionnaire est une collection non numérotée de couples var:val où var
est un objet non mutable (la clé) et où val est n'importe quelle valeur
• On peut accéder à un élément d’un dictionnaire à partir d’une clé
• Les clés d’un dictionnaires doivent être distinctes et ne peuvent pas être
modifiées
Initialisation
• D={}; Dc=dict() #Dictionnaire vide
• stock={"pomme":40,"orange":30}
• etudiant={'nom':'ali','age':20,'cours':['Math','Phys']}
Insertion/Modification
On peut modifier la valeur associée à une clé, ou rajouter un nouveau couple
clé/valeur :
stock={"pomme":40,"orange":30}
stock["kiwi"]=60 #stock={'pomme': 40, 'orange': 30, 'kiwi': 60}
stock['orange']='cent' # stock={'pomme': 40, 'orange': 'cent', 'kiwi': 60}
2021-2022
H.EL YOUSSFI Programmation python 36
37. Accès à un élément
Conteneurs standards Dictionnaires
• On peut rapidement accéder à la valeur associée à une clé. C'est le principal
intérêt des dictionnaires
Exemple
• La clé doit être non mutable. Donc essentiellement des chaînes et des
nombres mais pas de listes. On peut utiliser des tuples comme clés à
condition qu'ils ne contiennent aucun objet mutable
• Il est aussi possible de demander si la clé existe, avec l'opérateur in
Exemple
2021-2022
H.EL YOUSSFI Programmation python 37
38. Principales méthodes
Conteneurs standards Dictionnaires
Syntaxe Sémantique
len(d) Nombre d’éléments du dictionnaire
del(d[k]) Détruit l’entrée 'k' du dictionnaire
d.clear() Supprime tous les éléments du dictionnaire 'd'
d.copy() Renvoie une copie du dictionnaire 'd'
d.keys() Renvoie la liste des clés utilisées dans le dictionnaire
d.values() Renvoie la liste des valeurs utilisées dans le dictionnaire 'd'
d.has_key(k) Renvoie True si la clé passée en paramètre existe, False sinon
d.items() Renvoie une liste équivalente de tuples à partir du dictionnaire 'd'
d.pop(cle, val) Supprime et retourne d[cle] si la clé est présente sinon retourne val
d.update(d1) Ajoute les paires clé-valeur de 'd1' à 'd'
sorted(d) Retourne une liste ordonnée des clés du dictionnaire d
2021-2022
H.EL YOUSSFI Programmation python 38
40. Exemple
Conteneurs standards Dictionnaires
etud={'nom':'ali','age':20,'cours':['math','phys']}
x=etud.pop('nom','clé inexistante')
print(x) #ali
print(etud) #{'age': 20, 'cours': ['math', 'phys']}
print(etud.pop('tel',-1)) #-1
etud={'nom':'ali','age':20,'cours':['math','phys']}
print(etud.keys()) #dict_keys(['nom', 'age', 'cours'])
print(etud.values()) #dict_values(['ali', 20, ['math', 'phys']])
for i in etud: #
print(i,":",etud[i])
for cle,val in etud.items(): #
print (cle,val)
2021-2022
H.EL YOUSSFI Programmation python 40
41. Les fonctions
• Définition
• Arguments d’une fonction
• Fonctions variadiques
• Portée d’une variable
2021-2022
H.EL YOUSSFI Programmation python 41
42. Définition
Fonctions Définition
• Les fonctions servent à rendre un programme modulaire et à éviter de
répéter plusieurs fois le même code
Définition:
def <nom_fonction>(arg1, arg2,... argN):
bloc d'instructions
return <valeur(s)>
Exemple:
1.
2.
3.
2021-2022
H.EL YOUSSFI Programmation python 42
43. Exemples
• Les parenthèses sont obligatoires pour appeler une fonction
Exemple:
• Définition d’une fonction qui ne fait rien
Exemple:
• Remarque: Une fonction qui n'a pas de return renvoie par défaut None
2021-2022
H.EL YOUSSFI Programmation python 43
Fonctions Définition
44. Arguments d’une fonction
Fonctions Arguments d’une fonction
• Les arguments d'une fonction ne sont pas typés a priori mais sont substitués
dynamiquement dans le code de la fonction lors de l’exécution
• On peut inverser les arguments lors d’un appel si on les nomme
Exemple:
def puissance(a, b):
return a**b
print(puissance(2,3)) #affiche 8
x=puissance(b=3,a=2)
print(x) #affiche 8
2021-2022
H.EL YOUSSFI Programmation python 44
45. Arguments nommés
• Les arguments nommés permettent de donner des noms et des valeurs par
défaut à certains arguments d’une fonction
• Les arguments nommés deviennent optionnels lors de l’appel à la fonction
• Exemples
1. def afficher(msg,nom="ali"):
return "{} {}".format(msg,nom)
print(afficher("bonjour")) #bonjour ali
print(afficher("bonjour","laila")) #bonjour laila
2. def F(a,b,c=0,d=2):
return a+b-c*d
x=F(10,5); print(x) #15
y=F(5,10,d=3); print(y) #15
z=F(5,10,d=1,c=2); print(z) #13
• Les arguments non-nommés doivent être placés, toujours dans le même
ordre, au début de la fonction et les arguments nommés toujours à la fin
2021-2022
H.EL YOUSSFI Programmation python 45
Fonctions Arguments d’une fonction
46. Fonction variadique
• Une fonction variadique est une fonction dont le nombre d’arguments est
variable et donc on peut y mettre le nombre d’arguments que l’on veut
• L’opérateur * convertit des arguments non nommés en tuple
• Exemple
• On utilise l'opérateur * pour transformer une liste en arguments d’une fonction
Exemple:
L=[2,5,9,4]
print(sum(L)) #Error: unsupported operand type(s) for +=: 'int' and 'list'
print(sum(*L)) # 20 =>l’opérateur * "déliste" L en arguments
2. def sum(*args):
s=0
for x in args: s+=x
return s
print(sum(2,4)) #6
print(sum(2,3,10,5,4)) #24
1. def afficher(*args):
print(args)
afficher('pomme','orange')
#('pomme', 'orange')
afficher('laila',30,True,'salut')
#('laila', 30, True, 'salut')
2021-2022
H.EL YOUSSFI Programmation python 46
Fonctions Fonctions variadiques
47. Fonction variadique
• On peut avoir un nombre variable d’arguments nommés, utile quand on a
beaucoup d’arguments optionnels ayant une signification différente
• L’opérateur ** convertit des arguments nommés en dictionnaire
Exemple
1. def afficher(**args):
print(args)
afficher(nom="ali",age=30) #{'nom': 'ali', 'age': 30}
2. def test(**args):
for k in args:
print(k," : ",args[k])
test(nom='ali',age=30,adresse='agadir')
etudiant={'nom':'laila','age':20,'cours':['Math','Phys']}
test(**etudiant)
2021-2022
H.EL YOUSSFI Programmation python 47
Fonctions Fonctions variadiques
49. Exemple
Fonctions Fonctions variadiques
nbr_jours=[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
def is_leap(annee):
return annee%4==0 and(annee%100!=0 or annee%400==0)
def nbrJour(mois,annee):
""" Retourne le nombre de jours dans le mois et l’année spécifiés"""
if not 1<=mois<=12: return 'mois invalide'
elif mois==2 and is_leap(annee): return 29
else: return nbr_jours[mois]
print(nbrJour(2,2000)) #29
print(nbrJour(2,2017)) #28
2021-2022
H.EL YOUSSFI Programmation python 49
50. Variable locale/globale
Fonctions Portée d’une variable
• La portée d’une variable correspond à l’ensemble des lignes dans lesquelles la
variable peut être appelée
• Lorsqu’on est en dehors de la portée d’une variable et que l’on fait appel à elle,
le programme provoque une erreur
• Une variable est dite “globale” si sa portée recouvre l’ensemble du programme
• Une variable est dite “locale” si sa portée recouvre seulement une partie du
programme
• Exemple
2021-2022
H.EL YOUSSFI Programmation python 50
x="salut"
def test():
x="bonjour"
print(x)
test() #bonjour
print (x) #salut
def test():
x="bonjour"
print(x)
test() #bonjour
print (x) #Erreur
#x inconnu à l’exterieur
de la fonction test
x="salut"
def test():
global x
x="bonjour"
print(x)
test() #bonjour
print (x) #bonjour
51. Variable locale/globale
Fonctions Portée d’une variable
1. x='global x '
def test():
y='local y'
print(y)
test() #local y
2. x='global x'
def test():
y='local y'
print(x)
test() #global x
3. x='global x'
def test():
y='local y'
print(x)
x='abc'
test() #Erreur
# local variable 'x' referenced
before assignment
2021-2022
H.EL YOUSSFI Programmation python 51
4. x='global x'
def test():
x='local x'
print(x)
test() #local x
print(x) #global x
5. x='global x'
def test():
global x #on déclare travailler avec la
variable globale
x='local x'
print(x)
test() #local x
print(x) #local x
53. enumerate() / zip()
Fonctions Fonctions
2021-2022
H.EL YOUSSFI Programmation python 53
• Les fonctions enumerate() et zip() sont utiles pour les itérations sur des
structures
enumerate() : Associe un index sur la structure lorsqu’il n’y en a pas
zip() : Permet d’itérer deux structures en parallèle
• Exemple
myset = {'a','w','d'}
for index,item in enumerate(myset):
print(index,item)
mylist1 = [5, 3, 9, 4, 1]
mylist2 = ['a','w','d','e']
for index,char in zip(mylist1,mylist2):
print (index ,char)
54. 2021-2022
H.EL YOUSSFI Programmation python 54
Les modules
• Importer un module
• Créer un module
• Chemin de recherche d’un module
• Modules standards
55. Importer un module
Modules Importer un module
2021-2022
H.EL YOUSSFI Programmation python 55
• Les modules Python permettent de grouper et de rendre facilement
réutilisable du code Python
• Différentes manières d'importer un module
import module1 , module2 # Importe les modules
import module1 as md1 #Importe un module en lui donnant un nom
from module import func1,func2 # Importe les fonctions
from module import * # Importe toutes les fonctions du module
• Exemple
56. Écrire et utiliser un module
Modules Créer un module
2021-2022
H.EL YOUSSFI Programmation python 56
• Créer un module revient à créer un fichier au nom du module que l’on désire
créer (suivi de ’.py’), puis d’y inclure les fonctions désirées
• Exemple
#Fichier my_module.py
txt='test string'
def find_index(L,val):
"""Trouver l'indice d'une valeur
dans une sequence"""
for i, value in enumerate(L):
if value==val :
return i
return -1
import my_module
cours=['math','phys','arabe','Histoire']
indice=my_module.find_index(cours,'phys')
print(indice)
import my_module as md
cours=['math','phys','arabe','Histoire']
indice=md.find_index(cours,'phys')
print(indice)
from my_module import find_index
cours=['math','phys','arabe','Histoire']
indice=find_index(cours,'phys')
print(indice)
57. Chemin de recherche d'un module
Modules Chemin de recherche d’un module
2021-2022
H.EL YOUSSFI Programmation python 57
• Par défaut, l’interpréteur Python cherche le module dans le répertoire où il
exécute les scripts, puis dans les endroits “habituels”
• Si un module se trouve dans un autre répertoire, il faut l'ajouter dans sys.path
Exemple:
• Remarque: si du code Python se trouve en dehors de toute fonction dans le
module, il sera exécuté à son chargement. Pour éviter que cela se produise, il
faut “protéger” le code avec :
import sys
sys.path.append('/Users/amazal/Desktop/Exemples_python')
from my_module import find_index,txt
cours=['math','phys','arabe','Histoire']; indice=find_index(cours,'phys')
print(indice)
print(txt)
#Fichier my_module.py
if __name__=="__main__":
# code exécuté seulement si on lance le fichier '.py ',
# pas si on l’ importe dans un autre fichier .
58. Modules standards
Modules Modules standards
2021-2022
H.EL YOUSSFI Programmation python 58
• Quelques modules standards:
String
Math
Time
Sys
os
• module sys: Informations système (version de python), options du système
sys.path:
donne le python path où sont recherchés les modules lors de l'utilisation
d'import
sys.path est une liste pour ajouter un élément : sys.path.append('...')
Le premier élément est le répertoire courant
sys.exit: permet de quitter un script python
59. 2021-2022
H.EL YOUSSFI Programmation python 59
Programmation orientée objet
• Classes et objets
• Attributs et leurs types
• Méthodes et leurs types
• Héritage
• Méthodes spéciales
• Encapsulation
• Polymorphisme
• Classes abstraites
60. Programmation orientée objet
Programmation orientée objet Classes et objets
2021-2022
H.EL YOUSSFI Programmation python 60
• Programmation Orientée Objet (POO) : paradigme de programmation
informatique
Elaboré par Alan Kay, dans les années 70’
Modélisation directe d’objets du monde réels
Un programme est vu comme une somme d’objets qui
communiquent et agissent les uns sur les autres. Ce sont ces
interactions qui décrivent le programme
• Programmation Fonctionnelle : Le programme est vu comme un empilement
d’appels à des fonctions (au sens mathématique du terme) qui forment
l’algorithme.
• Programmation Impérative : Le programme est vu comme une somme
d’instructions chacune agissant sur la mémoire et qui, mis bout à bout,
décrivent l’algorithme (c’était le paradigme utilisé jusqu’ici).
61. Classes et objets
Programmation orientée objet Classes et objets
2021-2022
H.EL YOUSSFI Programmation python 61
Classe : moule pour créer des données appelées objets
• une unité d’encapsulation : elle regroupe la déclaration des attributs et la
définition des méthodes associées dans une même construction syntaxique
Objet : donnée en mémoire qui est le représentant d’une classe
• Un objet est l’instance d’une classe
• Un objet est caractérisé par :
un état : la valeur des attributs (solde, etc.)
un comportement : les méthodes qui peuvent lui être appliquées (débiter,
créditer, etc.)
une identité : identifie de manière unique un objet (p.ex. son adresse en
mémoire)
• Un objet est créé à partir d’une classe (en précisant les paramètres effectifs de
son constructeur, sauf le premier, self)
62. Classes et objets
Programmation orientée objet Classes et objets
2021-2022
H.EL YOUSSFI Programmation python 62
• Standard de codage (CamlCase) : Le nom d’une classe est en CamlCase et
commence par une majuscule. Par exemple : ClassName ou CompteBancaire
• Notation pointée : On parle de notation pointée pour désigner l’accès à un
attribut ou à une méthode qui est propre à un objet.
Par exemple : myobject.var ou myobject.mymethod(arg1,arg2)
• self : Utilisée par convention à l’intérieur du code d’une classe pour faire
référence à l’objet lui-même
• Constructeur : Un constructeur est une méthode particulière appelée à la
création d’un objet pour l’initialiser. On utilise le nom de la classe pour
l’appeler, mais dans le code de la classe on l’appelle “__init__()”
• Méthodes ou variables “de Classe” : Un attribut ou une méthode est dite “de
classe” si elle dépend de la classe et non de l’objet
65. Types d'attributs
Programmation orientée objet Attributs et leurs types
2021-2022
H.EL YOUSSFI Programmation python 65
• Attribut d'instance
Attribut défini dans la méthode constructeur
La valeur d'un attribut d'instance est propre à chaque instance
• Attribut de classe
Attribut défini au niveau de la classe
La valeur est partagée par tous les objets instanciés à partir de la classe
• L'ensemble des attributs d'instance sont regroupés dans un attribut spécial :
__dict__ de type dictionnaire
Exemple:
S1=Salarie('alami','laila','talborjt',6000)
print(S1.__dict___) #{'nom': 'alami', 'prenom': 'laila', 'adresse': 'talborjt',
'salaire': 6000}
66. Attribut de classe (Exemple: taux)
Programmation orientée objet Attributs et leurs types
2021-2022
H.EL YOUSSFI Programmation python 66
class Salarie:
def __init__(self,nom,prenom,adresse,salaire):
self.nom=nom
self.prenom=prenom
self.adresse=adresse
self.salaire=salaire
def nomComplet(self):
return '{} {}'.format(self.nom,self.prenom)
def AugmenterSalaire(self):
self.salaire=int(self.salaire * 1.05)
S1=Salarie('alami','laila','talborjt',6000)
print(S1.salaire) #6000
S1.AugmenterSalaire()
print(S1.salaire) #6300
• A chaque changement du taux d’augmentation, il faut parcourir tout le code et
effectuer la modification => Utiliser une variable de classe taux=1.05
68. Attribut de classe (Exemple: nombre salariés)
Programmation orientée objet Attributs et leurs types
2021-2022
H.EL YOUSSFI Programmation python 68
class Salarie:
taux=1.05 #attribut de classe: taux d’augmentation au sein de l’entreprise
nb_salarie=0 #attribut de classe: compteur des objets salariés criés
def__init__(self,nom,prenom,adresse,salaire):
self.nom=nom
self.prenom=prenom
self.adresse=adresse
self.salaire=salaire
Salarie.nb_salarie+=1
def nomComplet(self):
return '{} {}'.format(self.nom,self.prenom)
def AugmenterSalaire(self):
self.salaire=int(self.salaire * self.taux)
print(Salarie.nb_salarie) #0
S1=Salarie('alami','laila','talborjt',6000)
S2=Salarie('majidi','ilias','salam',7000)
print(Salarie.nb_salarie) #2
69. Types de méthodes
Programmation orientée objet Méthodes et leurs types
2021-2022
H.EL YOUSSFI Programmation python 69
• Une méthode d’instance est un sous-programme qui exploite l’état d’un objet
(en accès et/ou en modification)
Le premier paramètre désigne nécessairement l’objet. Par convention, on
l’appelle self
• Une méthode de classe est une méthode qui travaille sur la classe (et non
l’objet). Elle peut s'exécuter sans créer des instances de la classe
Elle est décorée @classmethod
Son premier paramètre est nommé cls par convention
• Une méthode statique est une méthode définie dans l’espace de nom de la
classe mais elle est indépendante de cette classe
Elle est décorée @staticmethod
Elle n’utilise ni self ni cls
71. Héritage
Programmation orientée objet Héritage
2021-2022
H.EL YOUSSFI Programmation python 71
• Principe : définir une nouvelle classe par spécialisation d'une (ou plusieurs)
classes existantes
• La sous-classe :
Récupère automatiquement tous les attributs et les méthodes des supers
classes
Peut spécialiser la super classe par l'ajout d’attributs et de méthodes
Peut modifier les types des attributs héritées
Peut modifier le comportement des méthodes héritées par redéfinition
• Redéfinition : Donner une nouvelle implémentation à une méthode déjà
présente dans une super classe (override, en anglais)
73. Héritage (Exemple2)
Programmation orientée objet Héritage
2021-2022
H.EL YOUSSFI Programmation python 73
class Manager(Salarie):
def __init__(self,nom,prenom,salaire,list_sal=None):
super().__init__(nom,prenom,salaire)
if list_sal is None:
self.list_sal=[]
else: self.list_sal=list_sal
def ajouter_salarie(self, sal):
if sal not in self.list_sal:
self.list_sal.append(sal)
def supprimer_salarie(self, sal):
if sal in self.list_sal:
self.list_sal.remove(sal)
def afficher_salarie(self):
print("***liste des salariés****")
for sal in self.list_sal:
print(sal.nomComplet())
mg1=Manager("alami","imad",30000,
[cons1,cons2])
print(mg1.nomComplet())
mg1.afficher_salarie()
S1=Salarie("alaoui","hind",10000)
mg1.ajouter_salarie(S1)
mg1.afficher_salarie()
mg1.supprimer_salarie(cons1)
mg1.afficher_salarie()
74. Fonctions prédéfinies
Programmation orientée objet Fonctions prédéfinies
2021-2022
H.EL YOUSSFI Programmation python 74
isinstance(obj,cls)
• Renvoie True si obj est instancié à partir de la classe cls
• Exemple:
print(isinstance(mg1,Manager)) #True
print(isinstance(mg1,Salarie)) #True
print(isinstance (mg1,Consultant)) #False
issubclass(classe1,classe2)
• Renvoie True si classe1 est une sous-classe de la classe2
• Exemple:
print(issubclass(Manager,Salarie)) #True
print(issubclass(Consultant,Salarie)) #True
print(issubclass(Consultant,Manager)) #False
print(issubclass(Salarie,Salarie)) #True
75. Méthodes spéciales
Programmation orientée objet Méthodes spéciales
2021-2022
H.EL YOUSSFI Programmation python 75
• __init__(self, ...) : le constructeur, méthode d’initialisation appelée à la
création d'un objet
• __del__(self) : le destructeur, appelé quand une instance est sur le point
d’être détruite
• __repr__(self) : chaîne représentant un objet et qui devrait correspondre
(quand c’est possible) à une expression Python valide pour créer l’objet
• __str__(self) : utilisée par str() pour obtenir la représentation sous forme
d’une chaîne de caractères lisible de l’objet. Si non définie, retourne le résultat
de __repr__
• __len__(self): appelée quand souhaite connaitre la taille d’un objet
conteneur
• __add__(self, r): retourne self + r
77. Encapsulation en POO
Programmation orientée objet Encapsulation
2021-2022
H.EL YOUSSFI Programmation python 77
Encapsulation
• Principe qui consiste à cacher l'information contenue dans un objet et de ne
proposer que des méthodes de manipulation de cet objet
Principaux avantages
• Protéger: ne pas permettre l'accès à tout dès que l'on a une référence de l'objet
• Masquer l'implémentation: toute la décomposition du problème n'a besoin
d'être connue du programmeur client
• Evolutivité: possibilité de modifier tout ce qui n'est pas public sans impact
pour le programmeur client
Règles à respecter
• Rendre privés les attributs caractérisant l'état de l'objet
• Fournir des méthodes publiques permettant d’accèder/modifier l'attribut
78. Encapsulation en python
Programmation orientée objet Encapsulation
2021-2022
H.EL YOUSSFI Programmation python 78
• Pas d’information privées en Python mais une convention :
En Python tous les attributs sont des attributs publiques : accessibles à
partir d'autres classes : L'encapsulation n'est pas respectée !
Exemple : s1.salaire = 10000
Il est possible de brouiller l'accès à un attribut en le nommant comme
suit : __nomAttribut => Simule une information privée
Un attribut brouillé est renommé automatiquement à
_NomClasse__NomAttribut
• Les getters et setters permettent l'encapsulation, mais pas très pythonic
79. Getters et setters
Programmation orientée objet Encapsulation
2021-2022
H.EL YOUSSFI Programmation python 79
class Salarie:
def __init__(self,nom,sal=2000):
self.__nom=nom
self.__salaire=sal
def getNom(self):
return self.__nom
def setNom(self,nom):
self.__nom=nom
def getSalaire(self):
return self.__salaire
def setSalaire(self,sal):
if 1000<=sal<=50000:
self.__salaire=sal
else: print("salaire non valide")
if __name__=='__main__':
s1=Salarie("alami hind",4000)
print(s1.__salaire)
#Erreur: Salarie' object has no
# attribute '__salaire'
print(s1.getNom()," : ", s1.getSalaire())
#alami hind : 4000
s1.setSalaire(30000)
print(s1.getSalaire()) #30000
s1.setSalaire(100) #salaire non valide
print(s1.getSalaire()) #30000
80. Propriétés
Programmation orientée objet Encapsulation
2021-2022
H.EL YOUSSFI Programmation python 80
Propriétés sur les objets :
• Avoir une syntaxe identique à la manipulation d’un attribut (en accès ou
modification) mais par l’intermédiaire de méthodes et donc avec contrôle !
• Faire croire que l'on accède directement aux attributs
• Etre pythonic tout en préservant l'encapsulation
Principe de Python :
• On commence par définir un attribut normal
• Si on a besoin de le contrôler, on passer à une propriété : cette modification
ne remet pas en cause le code client qui reste inchangé
85. Polymorphisme
Programmation orientée objet Polymorphisme
2021-2022
H.EL YOUSSFI Programmation python 85
Définition
• Le nom polymorphisme vient du grec et signifie qui peut prendre plusieurs formes
• Le polymorphisme peut être vu comme la capacité de choisir dynamiquement la
méthode qui correspond au type réel de l’objet
Avantages
• Permet une programmation beaucoup plus générique
• Utiliser un même nom de méthode pour plusieurs types d’objets différents
• Le développeur n’a pas à savoir le type précis de l’objet sur lequel la méthode va
s’appliquer. Il lui suffit de savoir que cet objet implémentera la méthode
Exemple: L’opérateur +
A+B
Si A=2 et B=3 le résultat sera 5
Si A="sa" et B="lut" le résultat sera "salut"
86. Exemple 1
Programmation orientée objet Polymorphisme
2021-2022
H.EL YOUSSFI Programmation python 86
class Document:
def __init__(self,nom):
self.nom=nom
def afficher(self):
raise NotImplementedError("Subclass must implement abstract method")
class Pdf(Document):
def afficher(self):
return "Show pdf content!"
class Word(Document):
def afficher(self):
return "Show Word content!"
if __name__=="__main__":
list_doc=[Pdf("doc1"),Pdf ("doc2"),Word ("doc3")]
for d in list_doc:
print(d.nom,d.afficher())
87. Exemple 2
Programmation orientée objet Polymorphisme
2021-2022
H.EL YOUSSFI Programmation python 87
import math
class Cercle:
def __init__(self,rayon):
self.rayon=rayon
def surface(self):
return math.pi*self.rayon**2
class Cylindre(Cercle):
def __init__(self,rayon,hauteur):
super().__init__(rayon)
self.hauteur=hauteur
def volume(self):
return super().surface()*self.hauteur
class Cone(Cylindre):
def volume(self):
return super().volume()/3
C1=Cylindre(5,8)
print("surface de base du cylindre
%.2f"%(C1.surface())) #78.54
print("volume du cylindre %.2f"%(C1.volume()))
#628.32
C2=Cone(5,8)
print("surface de base du cône",C2.surface())
#78.54
print("volume du cône",C2.volume()) # 209.43
88. Classes abstraites en POO
Programmation orientée objet Classes abstraites
2021-2022
H.EL YOUSSFI Programmation python 88
• Une classe abstraite ne permet pas d’instancier des objets mais sert de base
pour créer des classes dérivées
• Formée de :
méthodes et champs habituels
méthodes abstraites
• Si une classe dérivée d’une classe abstraite ne redéfinit pas toutes les
méthodes abstraites de sa classe de base, elle est elle-même abstraite
• Une classe dérivée d’une classe abstraite peut être déclarée abstraite
89. Classes abstraites en POO
Programmation orientée objet Classes abstraites
2021-2022
H.EL YOUSSFI Programmation python 89
Utilité
• Le recours aux classes abstraites facilite la conception orientée objet :
• Permet de placer toutes les fonctionnalités qu’on veut faire figurer dans les
classes dérivées
Soit sous forme d’une implémentation complète de méthodes (non-
abstraites) et de champs, lorsqu’ils sont partagés par toutes ses
descendantes
Soit sous forme d’une méthode abstraite, dont l’implémentation
varie selon les classes dérivées, mais pour s’assurer qu’elle sera
présente dans toute classe dérivée instanciable
⇒ très utile pour le polymorphisme
90. Classes abstraites en python
Programmation orientée objet Classes abstraites
2021-2022
H.EL YOUSSFI Programmation python 90
• Utilisation du module abc (Abstract Base Class)
• Exemple
from abc import ABC,abstractmethod
class FormeGeo(ABC):
def __init__(self,couleur):
self.couleur=couleur
@abstractmethod
def Perimetre(self):
raise NotImplementedError("subclass
must define abstract method")
@abstractmethod
def Surface(self):
raise NotImplementedError("subclass
must define abstract method")
class Rectangle(FormeGeo):
def __init__(self,long,larg,color):
super().__init__(color)
self.longueur=long
self.largeur=larg
def Perimetre(self):
return (self.longueur+self.largeur)*2
def Surface(self):
return self.longueur*self.largeur
f=FormeGeo() #Erreur
r=Rectangle(2,3,"rouge")
print(r.Perimetre())
print(r.Surface())
print(r.__dict__)