0% ont trouvé ce document utile (0 vote)
2 vues130 pages

Initiation A Python 2021

Ce document est un guide d'initiation à la programmation en Python, abordant des sujets tels que l'installation de Python, les opérations de base, les types de données, et les structures de programme. Il inclut également des prérequis pour les apprenants et des exercices pratiques pour renforcer les compétences. Le langage Python est présenté comme un outil accessible et polyvalent, utilisé par de nombreuses entreprises et secteurs.

Transféré par

zena.amaimia
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues130 pages

Initiation A Python 2021

Ce document est un guide d'initiation à la programmation en Python, abordant des sujets tels que l'installation de Python, les opérations de base, les types de données, et les structures de programme. Il inclut également des prérequis pour les apprenants et des exercices pratiques pour renforcer les compétences. Le langage Python est présenté comme un outil accessible et polyvalent, utilisé par de nombreuses entreprises et secteurs.

Transféré par

zena.amaimia
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation

Initiation Python
Reconvert, Paris.
© Reconvert

Léopold GAMBA
Paris

1
Programmation

Programmation
Reconvert, Paris.

En langage Python
© Reconvert

initiation.

2
Programmation

Pré-requis
Reconvert, Paris.
© Reconvert

1. Savoir utiliser un PC sous Windows

2. Premières notions de programmation (un plus)

3
Les points abordés

Objectif : acquérir les notions de base pour programmer

1- Introduction & historique 5

2- Installer Python 13
Reconvert, Paris.

3- Opérations de base 19
© Reconvert

4- Notion de module 23

5 à 13- Types de données 26

14- Alternative et boucles 66

15- Fichiers texte 75

16 à 19- Les fonctions 82

20- Les exceptions 112

21- Initiation POO 115

4
#1 Introduction & historique

1 - Historique , caractéristiques
a- Langage créé en 1990 par Guido Von Rossum

b- Implémentation libre et open source.

c- Dernière version Python 3.x (implémentation CPython).


Reconvert, Paris.
© Reconvert

Code fonctionnel

Multi paradigme Programmation impérative

Programmation OO

Gestion de la mémoire
Langage de haut niveau ( abstraction des détails de bas niveau )
Typage des variables

5
#1 Introduction & historique

2- Spécificités du langage

Le langage Python est :

a- Lisible (proche du langage naturel)


Reconvert, Paris.

b- Simple à apprendre
© Reconvert

c- Concis

Code en PHP Code en Python

6
#1 Introduction & historique

3- Forces du langage Python

a- Vitesse de développement et maintenance


Reconvert, Paris.

b- Communauté forte et active


© Reconvert

c- Multi-plateforme (Windows, Linux, Mac, etc.)

7
#1 Introduction & historique

4- Faiblesses du langage Python

a- Performances d’exécution
Reconvert, Paris.

b- Distribution
© Reconvert

8
#1 Introduction & historique

5- Versions du langage Python

Deux versions majeures :


a- Version 2.x (à abandonner en 2020)
Reconvert, Paris.

b- Version 3.x
© Reconvert

Nota

1. Les deux versions sont incompatibles.


2. Deux versions peuvent cohabiter sur une machine.

9
#1 Introduction & historique

6- Qui utilise Python & que faire avec?

De grandes entreprises + grands secteurs de l’industrie + etc :


1. Langage pour apprendre la programmation en prépas

2. Youtube a été recodé en Python


Reconvert, Paris.

3. DropBox a embauché le créateur de Python


© Reconvert

4. La NASA l'a utilisé pour faire des simulations

5. Instagram a été programmé en Django

6. Administration système
On peut écrire :
7. Dans les Banques
- Scripts systèmes, admin serveurs
8. Scientifiques - Sites web : Django, Pyramid, etc.
- Programmes scientifiques, calcul
9. Géographie, etc. - Etc.

10
#1 Introduction & historique

7- Un programme minimal
Reconvert, Paris.
© Reconvert

11
#2 Installations : python & IDE

1- Télécharger et installer Python

Travaux pratiques

a- Télécharger ici la version 3.x Windows 64 bits : [Link]


Reconvert, Paris.

b- Installer en suivant les étapes


Nota : ajouter Python 3.x au PATH
© Reconvert

c- Notez le dossier d’installation

IDE fourni avec Python

La ligne de commande Python (shell Python)

Menu Démarrer > Python

12
#2 Installations : python & IDE

2- Différents éditeurs et IDE et shell

Editeurs
a- PyCharm [Link]

b- Sublime Text [Link]


Reconvert, Paris.

c- Notepad++ [Link]
© Reconvert

d- Eclipse associé à PyDev [Link]

e- IDLE inclus dans Python

etc.

Shells
Linux (bash, etc.)
Cmd sous Windows
Console2 + module pyreadline + IPython

13
#2 Installations : python & IDE

3- Lancer un code Python

Exercice 1 : taper du code Python

a- Lancer le terminal Windows avec cmd puis c:\>python à l’invite.


Reconvert, Paris.

b- Le shell Python >>> s’affiche. Tapez print("Hello, World")


© Reconvert

c- Puis validez.

Exercice 2 : lancer un script Python

a- Créer c:\>stage\[Link] avec l’éditeur Notepad++ ou autre, avec print("Hello, World") dedans.

b- Lancer cmd depuis c:\>stage puis python [Link]

14
#2 Installations : python & IDE

4- Terminal et shell améliorés

Installer pyreadline + IPython

a- Lancez l’invite de commande MS DOS, allez sur c:\


Reconvert, Paris.

b- Puis : c:\>pip install pyreadline


© Reconvert

c- Installer IPython : c:\>pip install ipython

d- Lancer ipython dans Console2 : c:\>ipython

e- Le shell amélioré s’affiche.

15
#2 Installations : python & IDE

5- Créer un environnement virtuel

a- Dans le shell cmd : c:\>pip install virtualenv

b- Puis : c:\>pip install virtualenvwrapper-win (pour Windows)

c- Installer l’environnement : c:\>mkvirtualenv --python=chemin/vers/dossier/python stage


Reconvert, Paris.

Le chemin vous permet de préciser quelle version de l’interpréteur choisir.


© Reconvert

d- Pour supprimer l’environnement : c:\> rmvvirtualenv stage

e- Sélectionner l’environnement virtuel pour y travailler : c:\> workon stage

f- deactivate permet de sortir d’un environnement virtuel.

g- Lister les modules installés dans l’environnement virtuel et en faire un prérequis :


(stage) pip3 freeze > [Link]

16
#2 Installations : python & IDE

6- Installer des modules avec PIP


PIP est le logiciel chargé de gérer les modules Python (paquets) de votre système. Une large
partie des modules Python est hébergée sur PyPi (Python Package index).
PIP est installé avec Python.

Commandes PIP
Reconvert, Paris.

install : installer un module et l’ensemble de ses dépendances. Exemple : pip install requests
© Reconvert

uninstall : désinstalle un module. Exemple : pip uninstall requests

-r : avec cette option, on installe un ensemble de modules contenus dans un fichier.


Exemple : pip install –r [Link]

-u : avec cette option, on met à jour un module déjà installé.


Exemple : pip install –u requests

list : liste les modules installés sur le système.


Exemple : pip3 list

search : recherche dans la description des modules hébergés par PyPi.


Exemple : pip3 search GUI

17
#2 Installations : python & IDE

7- Télécharger et installer un éditeur de code

Travaux pratiques

a- Télécharger Notepad++ ou Sublime


Reconvert, Paris.

b- Installer en suivant les étapes


© Reconvert

c- Créer c:\>stage\test_hello.py avec print("Hello, World") dedans.

d- Tester le fichier

18
#3 Opérations de base, vocabulaire

1- Shell Python : affichage, arithmétique, vocabulaire


(fonction, variable, mots clés, objets)

Travaux pratiques

a- Lancer le shell Python (Console2 + iPython).


Reconvert, Paris.

b- exécuter les instructions ci-dessous, et observez.


© Reconvert

Instruction Sortie Commentaire

1+3
3-1
-6
2*4

19
#3 Opérations de base, vocabulaire

1- Shell Python : affichage, arithmétique, vocabulaire : suite


(fonction, variable, mots clés, objets)

Instruction Sortie Commentaire


2**3
Reconvert, Paris.

3/2
© Reconvert

3//2
3.0
nombre = 125
nombre
mot = "Coucou"
mot
del mot
mot

20
#3 Opérations de base, vocabulaire

1- Shell Python : affichage, arithmétique, vocabulaire : suite 1


(fonction, variable, mots clés, objets)

Instruction Sortie Commentaire


mot = "Cool"
Reconvert, Paris.

[Link]()
© Reconvert

[Link]()

x=3

print(x)

a,b,c = 3,5,7 déclaration de 3 variables a, b et c de


valeurs resp. 3, 5 et 7
print(a+b)

print('la valeur de', a, '+', b, 'est :', a+b)

a-b/c

(a-b)/c

21
#3 Opérations de base, vocabulaire

1- Shell Python : affichage, arithmétique, vocabulaire : suite 2


(fonction, variable, mots clés, objets)

Instruction Sortie Commentaire


b%c modulo
Reconvert, Paris.

max([4, 8, 9, 14, 12])


© Reconvert

m = max([4, 8, 9, 14, 12]) Le plus grand des nombres d’un tableau (liste)

22
#4 Structure d’un programme

1- Utiliser les modules importés

stage
[Link] module

minus package
Reconvert, Paris.

__init__.py
© Reconvert

[Link] module

[Link]

[Link]
Importer les modules et les utiliser

23
#4 Structure d’un programme

2- Utiliser un paquet : module ou ensemble de modules

Installer le paquet distant requests

a- Installer avec PIP : C:\> pip install requests


Reconvert, Paris.

b- utilisation
© Reconvert

Utiliser le paquet math

24
#4 Structure d’un programme

3- Quelques modules courants


– math : fonctions et constantes mathématiques de base (sin, cos, exp, pi...).
– sys : fournit les paramètres et fonctions liées à l’environnement d’exécution : passage d’arguments, gestion
de l’entrée/sortie standard...
– os : dialogue avec le système d’exploitation (e.g. permet de sortir de Python, lancer une commande en
shell, puis de revenir à Python).
Reconvert, Paris.

– random : génération de nombres aléatoires.


© Reconvert

– time : permet d’accéder à l’heure de l’ordinateur et aux fonctions gérant le temps.


– calendar : fonctions de calendrier.
– profile : évaluer le temps d’exécution de chaque fonction dans un programme (profiling en anglais).

– urllib2 : permet de récupérer des données sur internet depuis python.


– Tkinter : interface python avec Tk (permet de créer des objets graphiques ; nécessite d’installer Tk).
– re : gestion des expressions régulières.
– pickle : écriture et lecture de structures Python (comme les dictionnaires par exemple).

– string : fournit des opérations courantes sur les chaînes de caractères (équivalentes aux
méthodes de la classe string plus quelques bonus) : [Link](’FOO’), puis upper(), capitalize(), capwords(),
strip(), expandtabs(). Il est généralement recommandé d’utiliser les méthodes disponibles sur les objets de
type string équivalentes.

25
#5 Types de données en Python

1- Découvrir les différents types : fonction : type(), isinstance(.)


isinstance(.)

Travaux pratiques
Instruction Sortie Commentaire
a = 12
Reconvert, Paris.

type(a)
© Reconvert

b = 3.1

type(b)

isinstance(a,int) Un entier

isinstance(b,int)

isinstance(b,float) Un float

isinstance("coucou" , str) Une chaîne

type(True) Un booléen

isinstance(True , bool)

26
#5 Types de données en Python

2- Variables et types de retour, retour de print()


print()

De quel type est le retour d’une fonction ?


Travaux pratiques

Instruction Sortie Commentaire


Reconvert, Paris.

a = max([2, 5, 12, 1, 3])


© Reconvert

a 12

type(a) <class 'int'> La fonction max a retourné un entier.

mot = print("Cool ")

type(mot) <class 'NoneType'> print ne retourne rien (type NoneType)

print <built-in function print>

27
#6 Les types numériques

1- Les nombres entiers

Travaux pratiques : Tapez ces instructions dans la console.


Instruction Sortie Commentaire
int() Le constructeur
Reconvert, Paris.

chiffre = -51
© Reconvert

chiffre

isinstance(chiffre, int)

isinstance("Hello", int)

2+2 L’addition

3/2 Un flottant retourné.

4/2 2.0 La division retourne tjs 1 nb à virgule (flottant)

isinstance(4/2, int) False

isinstance(4/2, float) True

28
#6 Les types numériques

1- Les nombres entiers (suite)

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

2*2 Multiplication
© Reconvert

2**3 8 Puissance. Retourne un entier.

chiffre

myint = int(15) Conversion en int avec int()

myint 15

29
#6 Les types numériques

2- Les nombres flottants

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

2.0 2.0
© Reconvert

isinstance(2.0, float) True

float(2) 2.0 Conversion d’un entier en flottant

int(1.5) 1 Arrondi à l’entier le plus petit

int(-1.5) -1

int(-3/2) -1

30
#6 Les types numériques

2- Les nombres flottants (suite)

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

3//2 1 Division entière (retourne un entier)


© Reconvert

-3//2 -2 Si troncature : retourne le plus petit


nombre

31
#7 Les chaines de caractères

1- Le type chaine de caractères

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

chaine = "Chaîne de Kres" Doubles ou simples quotes, c’est pareil


© Reconvert

chaine 'Chaîne de Kres'

type(chaine) <class 'str'>

isinstance(chaine, str) True

"Hello" + 'World' 'HelloWorld' Concaténation

chaine + '.' 'Chaîne de Kres.'

chaine 'Chaîne de Kres' L’objet chaine non modifié par la concaténation

chaine = "Hello, World" 'Hello, World' Ce n’est pas une modification de chaine : c’est
chaine un autre objet. L’objet chaine initial a disparu.

32
#7 Les chaines de caractères

1- Le type chaine de caractères (suite)

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

chaine =str("Bon OK") 'Bon OK' C’est encore un autre objet.


© Reconvert

La concaténation

phrase = "Hello" + "," + " " + "World" 'Hello, World' Nota : bcp d’allocation d’objets.

" " .join(("Bonjour", "la", "Terre")) 'Bonjour la Terre' + performant car peu d’allocations.

"-" .join(("Bonjour", "la", "Terre")) 'Bonjour-la-Terre' + performant car peu d’allocations.

'Dès l\’arrivée' 'Dès l’arrivée' Echappement

33
#7 Les chaines de caractères

1- Le type chaine de caractères : suite 1

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

Triple guillemets. Pas besoin


texte = """L’objet est : "stable" d’échapper les simples et doubles
© Reconvert

enfin""" quotes. S’utilisent aussi pour le doc.


L’objet est : "stable"
print(texte) Affichage correct.
enfin
On peut insérer des sauts de ligne
""" Insérer des sauts avec les triples quotes.
' Insérer des sauts
… de ligne
\nde ligne\n'
… """ \n : instruction demandant à python
d’insérer le saut de ligne.

34
#7 Les chaines de caractères

1- Le type chaine de caractères : suite 1

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

texte1 = """Insérer des saut


… de ligne Plaçons la chaine avec sauts dans une
© Reconvert

… par ligne variable.


… """
texte1 'Insérer des saut \nde
On voit bien les sauts de ligne.
ligne\npar ligne\n'
print(texte1) Insérer des saut
de ligne Les sauts de ligne sont préservés.
par ligne
print("Insérer soi-même \n des Insérer soi-même On peut mettre les sauts soi-même.
sauts") des sauts
"Hello"[4] 'o' L’objet chaine est sliceable

35
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères

Chaînes de caractères et listes (cf. chapitre sur les listes).


Les chaînes de caractères peuvent être considérées comme des listes. Nous pouvons donc utiliser
certaines propriétés des listes comme les tranches.
Reconvert, Paris.
© Reconvert

Chaine comme liste Faire des tranches

Contrairement aux listes , les chaines sont non modifiables

36
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite

Méthodes associées aux chaînes de caractères


Plusieurs méthodes sont associées au type chaine. On peut aussi importer string par import string et
disposer d’autres constantes et méthodes.
Reconvert, Paris.

upper(), lower(), capitalize() :


majuscule, minuscule, 1è lettre du mot en majuscule.
© Reconvert

split(), rsplit() : renvoie une liste de mots, rsplit() commence à la


fin de la chaine (reverse split)

Indiquer le séparateur

Quelques utilisations

37
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 1

Méthodes associées aux chaînes de caractères


find() :
Recherche dans les chaines de caractères. Si l’élément recherché est trouvé, alors l’indice du début de
l’élément dans la chaîne de caractères est renvoyé. Si l’élément n’est pas trouvé, alors la valeur -1 est
Reconvert, Paris.

renvoyée.
© Reconvert

Si l’élément recherché est trouvé plusieurs


fois, seul l’indice de la première
occurrence est retourné.

Quelques utilisations

38
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 2

Méthodes associées aux chaînes de caractères


replace(), count() :
Remplace une chaine, et compte le nombre d’occurrences d’une chaîne de caractères passée en
argument respectivement.
Reconvert, Paris.
© Reconvert

str() :
Convertit en chaine.

Quelques utilisations

39
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 3

Méthodes associées aux chaînes de caractères


join() :
convertit une liste de chaînes de caractères en une chaîne de caractères.
Attention, la fonction join() ne s’applique qu’à une liste de chaînes de caractères.
Reconvert, Paris.
© Reconvert

Utiliser join()
Nota : la fonction join() ne s’applique qu’à une liste
de chaînes de caractères.

40
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 4

Méthodes associées aux chaînes de caractères


capwords() :
met la 1ère lettre des mots en majuscule. Contenu dans le module string.
Reconvert, Paris.
© Reconvert

strip(), expandtabs() :
gérer les espaces dans une chaîne en supprimant les blancs non significatifs ou en remplaçant les
tabulations par un nombre fixe d’espaces.

41
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 4

Toutes les méthodes associées à un objet : dir()


Pour avoir une liste exhaustive de l’ensemble des méthodes associées à une variable particulière,
vous pouvez utiliser la commande dir().
Reconvert, Paris.
© Reconvert

Aide et documentation d’une fonction particulière

42
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 5

Formater une chaine avec format()


La méthode format() permet une meilleure organisation de l’affichage des variables. Des accolades
vides {} précisent l’endroit où le contenu de la variable doit être inséré.
Reconvert, Paris.
© Reconvert

On indique dans les accolades {} dans


quel ordre afficher les variables (0
pour la variable à afficher en premier,
1 pour la variable à afficher en
second, etc)., ou en y écrivant le nom
de la variable (dé-corrélation)

Largeur de la colonne d’affichage = 10 caractères.

43
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 6

Formater une chaine avec format() : précision


La méthode format() permet une meilleure organisation de l’affichage des variables. Des accolades
vides {} précisent l’endroit où le contenu de la variable doit être inséré.
Reconvert, Paris.
© Reconvert

1. Les deux points (:) on veut préciser le format.


2. f indique qu’on veut afficher la variable sous
forme d’un réel (float).
3. .3 indique la précision voulue, soit ici 3 chiffres
après la virgule.
Légende

d pour entier, s pour string

44
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 7

Formater une chaine avec format() : alignements


Il est possible de préciser sur combien de caractères vous voulez qu’un résultat soit écrit et
comment se fait l’alignement (à gauche, à droite ou centré). Dans la portion de code suivant, le
caractère ; sert de séparateur entre les instructions sur une même ligne
Reconvert, Paris.
© Reconvert

> : aligné à droite,


< : aligné à gauche
^ : centré

Légende

* : caractère de remplissage

45
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 8

Formater une chaine : ancienne méthode


Sur d’anciens codes Python, vous pourrez trouver l’écriture formatée suivante : la syntaxe est
légèrement différente.
Reconvert, Paris.

% : l’endroit où sera placé la variable


dans la chaine de caractères.
© Reconvert

d : entier, i : entier, f : float

% : indique les variables à formater.

Précision de 2 chiffres après la


virgule.

46
#7 Les chaines de caractères

2- Plus loin sur les chaines de caractères : suite 9

Affichage avec pprint


Le module pprint permet de rendre l’affichage plus joli.
Adapté pour afficher rapidement des structures Python comme les listes et dictionnaire, et pour le
débogage.
Reconvert, Paris.
© Reconvert

Affichage avec pprint

Affichage avec print

47
#8 Les types booléens

1- Le type booléen

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

True True
© Reconvert

False False

type(True) bool

ok = True Une variable

ok True

isinstance(ok, bool) True

ok = bool(True)

ok True

48
#8 Les types booléens

1- Le type booléen (suite)

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

Opérations booléennes
© Reconvert

not True False

True and False False

False and True False

3 > 1 and 7 > 5 True

True or False True Ou inclusif

qte = 15

qte > 7 True

qte == 15 True

49
#9 Le type None

1- Le type None

Ce type signifie rien.

Travaux pratiques : Tapez ces instructions dans la console.


Reconvert, Paris.

Instruction Sortie Commentaire


© Reconvert

type(None) <class 'NoneType'> Rien

None == False False None n’est pas un booléen

None == True False

retour = print('Coucou') Coucou

type(retour) <class 'NoneType'> print retourne None, donc rien.

None Rien ne se passe sur le shell

50
# 10 Les listes ou tableaux

1- Le type liste (ou tableaux)


list(), append(), remove()

• Ce type est un tableau modifiable (mutable) et itérable (iterable).


Reconvert, Paris.

• Peut contenir des éléments de types différents


© Reconvert

• Les éléments sont définis par leur indice.

• Les indices commencent à 0.

3 -2 Jardin 2.0

Indice 0

51
# 10 Les listes ou tableaux

1- Le type liste (ou tableaux) : suite


list(), append(), remove()

Travaux pratiques : Tapez ces instructions dans la console.


Reconvert, Paris.

Instruction Sortie Commentaire


liste1 = list() Création avec le constructeur.
© Reconvert

liste1 []

liste2 = [] Création en utilisant des crochets

liste2 []

liste3 = [5, 'Bonjour'] Remplissage à la création

liste3 [5, 'Bonjour']

[Link]('le monde') Ajouter un élément

liste3 [5, 'Bonjour', 'le monde'] L’ordre est conservé

52
# 10 Les listes ou tableaux

1- Le type liste (ou tableaux) : suite 1


list(), append(), remove()

Travaux pratiques : Tapez ces instructions dans la console.


Reconvert, Paris.

Instruction Sortie Commentaire


[Link](0) L’argument ce n’est pas la clé, mais la
© Reconvert

valeur stockée
[Link](5)

liste3 ['Bonjour', 'le monde'] 5 a été enlevé

[Link]('Bonjour')

liste3 ['le monde']

[Link]('Le monde') Il faut respecter la casse

[Link]('le monde')

liste3 []

53
# 10 Les listes ou tableaux

1- Le type liste (ou tableaux) : suite 2


list(), append(), remove()

Travaux pratiques : Tapez ces instructions dans la console.


Reconvert, Paris.

Instruction Sortie Commentaire


liste2 = ['Bonjour']
© Reconvert

liste3 = ['le monde']

liste4 = liste2 + liste3 On peut concaténer des listes

liste4 ['Bonjour', 'le monde‘]

Les listes sont ordonnés, on peut écrire ceci

[3]*5 [3, 3, 3, 3, 3] On a une liste de 5 éléments

maliste = [6]*4 Créer une grande liste rapidement

maliste [6, 6, 6, 6]

54
# 11 Les tuples (ou tableaux fixes)

1- Le type tuple (ou tableaux non modifiables)

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

tuple1 = tuple() Utiliser le constructeur (tuple vide)


© Reconvert

tuple1 ()

tuple2 = () Création avec des parenthèses. Ici un


autre tuple vide.
tuple2 ()

tuple3 = (1, 'Bonjour') Création avec remplissage

tuple3 (1, 'Bonjour')

[Link]('Monde') KO : un tuple est non modifiable, il


faut en créer un autre.
tuple3 = tuple3 + ('Monde') Il manque une virgule après l’élément
à ajouter.

55
# 11 Les tuples (ou tableaux fixes)

1- Le type tuple (ou tableaux non modifiables) : suite

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

Il manque une virgule après l’élément


tuple3 = tuple3 + ('Monde')
à ajouter.
© Reconvert

La virgule est nécessaire : l’ancien


tuple3 = tuple3 + ('Monde',) tuple3 a été supprimé, recyclé par le
système.
Création avec des parenthèses. Ici un
tuple3 (1, 'Bonjour', 'Monde')
autre tuple vide.
Les tuples sont ordonnés, on peut écrire ceci

(3, 3, 3, 3, 3) On a un tuple de 5 éléments


,
(3 )*5
Créer un grand tuple rapidement
,
tuple4 = (7 )*4
tuple4 (7, 7, 7, 7)

56
# 11 Les tuples (ou tableaux fixes)

1- Le type tuple (ou tableaux non modifiables) : suite 1

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

(1,) + [5] On ne peut mélanger ces types.


© Reconvert

57
# 12 Les sets ou ensembles

1- Le type set (ou ensembles)


add(), union(), difference(), intersection() , isdisjoint() , issubset() , issuperset(), etc.

• Ce type est un ensemble(comme en mathématiques) .


Reconvert, Paris.

• Peut contenir des éléments de types différents


© Reconvert

• Il n’y a pas d’ordre pour les éléments

• Les doublons sont impossibles (-> fusion/dédoublonner des listes)

• Plusieurs opérations disponibles : union, intersection, etc.

12 jardin

9 coucou
-5.3

58
# 12 Les sets ou ensembles

1- Le type set (ou ensembles) : suite


add(), union(), difference(), intersection() , isdisjoint() , issubset() , issuperset(), etc.

Travaux pratiques : Tapez ces instructions dans la console.


Reconvert, Paris.

Instruction Sortie Commentaire


© Reconvert

Créer en utilisant le constructeur


ensemble = set()

set()
ensemble

ensemble2 = {1, 2, 3} Remplir. Ne pas confondre avec un


dictionnaire.
ensemble2 {1, 2, 3}

ensemble3 = {"Hello" , "World"}

ensemble3 {'Hello' , 'World'}

59
# 12 Les sets ou ensembles

1- Le type set (ou ensembles) : suite 1


add(), union(), difference(), intersection() , isdisjoint() , issubset() , issuperset(), etc.

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

[Link](1) Ajouter un elmt avec add(.)


© Reconvert

ensemble3 {'Hello' , 1, 'World'} L’ordre n’est pas gardé.

[Link]("World")
{'Hello' , 1, 'World'} Unicité des éléments
ensemble3
préservée
ensemble4 = set("Hello" )

ensemble4 {'H' , 'e', 'l', 'o'} Une chaine est itérable

ensemble5 = set(15 )

ensemble5 TypeError: 'int' object is not iterable

60
# 12 Les sets ou ensembles

1- Le type set (ou ensembles) : suite 2


add(), union(), difference(), intersection() , isdisjoint() , issubset() , issuperset(), etc.

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

ensemble1 = {1, 2}
© Reconvert

ensemble2 = {5, 2}

ensemble = [Link](ensemble2) Union de 2 ensembles

ensemble {1, 2, 5}

ensemble3 = [Link](ensemble2) Intersection

ensemble3 {2}

ensemble4 = [Link](ensemble2) Différence

ensemble4 {1}

61
# 13 Les dictionnaires

1- Le type dict (ou dictionnaire)


dict(), get(), items(), keys() , pop() , popitem() , values(), update(), etc.

• Ce type est une structure de type clé/valeur .


Reconvert, Paris.

• Permet l’accès rapide aux informations connues


© Reconvert

• On ne peut avoir de doublons sur la clé

• Les éléments stockés peuvent être de types différents

• L’accès se fait via la clé.

"pomme" -2 "Paris" 2.0

Clé
"fruit" "minus" "ville" "prix"
associative

62
# 13 Les dictionnaires

1- Le type dict (ou dictionnaire) : suite


dict(), get(), items(), keys() , pop() , popitem() , values(), update(), etc.

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

dict()
© Reconvert

dico = dict() {} Utiliser le constructeur

dico = {} Utiliser les accolades

dico1 = dict((("hello", "bonjour"), Notation complexe


("world", "monde")))
dico1 {'hello': 'bonjour', 'world': 'monde'}

dico2 = {'hello': 'bonjour', 'world': Meilleure notation


'monde'}

dico1 == dico2 True Les 2 sont égaux

63
# 13 Les dictionnaires

1- Le type dict (ou dictionnaire) : suite 1


dict(), get(), items(), keys() , pop() , popitem() , values(), update(), etc.

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

dico1["hello"] 'bonjour' Atteindre un élément


© Reconvert

dico1["blue"] = "bleu" Ajout d’une clé

{'hello': 'bonjour', 'world': 'monde',


dico1 'blue': 'bleu'}

dico1["blue"] = "bleue" Modifier une valeur

dico1 {'hello': 'bonjour', 'world': 'monde',


'blue': 'bleue'}
type(dico1) <class 'dict'>

64
# 13 Les dictionnaires

1- Le type dict (ou dictionnaire) : suite 2


dict(), get(), items(), keys() , pop() , popitem() , values(), update(), etc.

Travaux pratiques : Tapez ces instructions dans la console.

Instruction Sortie Commentaire


Reconvert, Paris.

[Link]("hello") 'bonjour' Atteindre un élément


© Reconvert

[Link]() Donne les clés

[Link]("hello") Supprime l’élément selon clé

dico1 {'world': 'monde', 'blue': 'bleue'}

[Link]() 'monde', 'bleue' Donne les valeurs

[Link]() Affiche les items

[Link]() Supprime les items

dico1 {} Il n’y a plus rien

65
# 14 Structures de décision et boucles

1- Les opérateurs logiques, la fonction input()

• Les opérateurs logiques permettent d’écrire les structures logiques

• Conditions complexes possibles avec plusieurs opérateurs


tx = "hello world"
Reconvert, Paris.

• Opérateurs : >, >=, <, <=, ==, !=, or, and, not, in "hello" in tx
© Reconvert

A B C A B C
True True True True True True

True False True True False False

False True True False True False

False False False False False False

or : table de vérité and : table de vérité

66
# 14 Structures de décision et boucles

2- La fonction input() pour récupérer les saisies

• Cette fonction attends la saisie de l’utilisateur

• Créer toujours une variable pour récupérer cette saisie


Reconvert, Paris.

• La saisie est une chaine : on peut la convertir en entier, flottant, etc.


© Reconvert

Exemple
Instruction Sortie Commentaire
nom = input("Quel est votre nom? ") Quel est votre nom? Si on saisit Dupont

print(nom) Dupont

entree = input("Quel est le score? ") Quel est le score? Si on saisit 42

score = int(entree)

type(score) <class 'int'>

67
# 14 Structures de décision et boucles

3- Les structures de décision

• On teste des conditions logiques

• Le résultat de tests est un booléen (True ou False)


Reconvert, Paris.

if [condition1]:
© Reconvert

insts
elif [condition2]:
insts
elif [condition3]:
insts
else :
insts

Syntaxe

Votre indentation sera de 4 espaces


exemple

68
# 14 Structures de décision et boucles

3- Les structures de décision : suite

• Il est possible d’imbriquer des if

• dans chaque bloc on peut avoir 1 ou plusieurs instructions


Reconvert, Paris.

if [condition1]:
© Reconvert

insts
elif [condition2]:
insts
elif [condition3]:
insts
else :
insts

Syntaxe
if imbriqué

Votre indentation sera de 4 espaces

69
# 14 Structures de décision et boucles

4- La boucle while (tant que)

• Quasi identique à la boucle dans les plusieurs langages (PHP, Java, etc.)

• Exécute des instructions tant qu’une condition est vraie


Reconvert, Paris.

initialiser
while [condition1]:
© Reconvert

inst1
inst2
inst3 modifier la condition

Syntaxe
Exemple

Nota
• Initialiser une variable pour entrer dans la boucle
• Attention aux boucles infinies (CTRL+C termine le programme)
• Utiles si on ne sait pas combien de fois boucler.

70
# 14 Structures de décision et boucles

5- La boucle for (pour)

• Assez différente en Python par rapport aux autres langages.

• Associé en général avec le générateur range(start,stop,step) qui génère une


séquence de nombres.
Reconvert, Paris.

• Utilise l’opérateur in.


© Reconvert

• On peut itérer sur tout élément itérable (liste, chaine, etc.)

• Le nombre d’itérations est souvent connu

for variable in [itérable]:


inst1
inst2
inst3

Syntaxe

71
# 14 Structures de décision et boucles

5- La boucle for (pour) : suite

Associé à range()
Reconvert, Paris.

Exemple avec range()


© Reconvert

On peut générer une liste dans un print et filtrer dedans.


• permet d'écrire du code court mais …
• plus difficile à maintenir que un for classique
• la sortie est une liste (on obtient une liste)

Exemple for dans un print()


print() (cf. liste en intension)

72
# 14 Structures de décision et boucles

5- La boucle for (pour) : suite 1

Filtrer dans un print


On peut filtrer dans le print
Nota : ne pas abuser de cette écriture, sinon le code devient illisible.
Reconvert, Paris.
© Reconvert

Filtrage de la liste donnée par for

73
# 14 Structures de décision et boucles

6- La boucle with (avec) : lecture /écriture d’un fichier

Cette boucle permet de lire un fichier rapidement.


En quittant with, le fichier est fermé automatiquement de façon propre.
Reconvert, Paris.
© Reconvert

Exemple : lire /écrire dans un fichier avec with

74
# 15 Les fichiers en Python

1- Ouvrir, lire et écrire dans un fichier : les modes


open(.), read(.), readline(.), seek(.), tell(), close(), write()

Les différents modes


On a les modes suivants :
Reconvert, Paris.

Mode Action Commentaire


© Reconvert

r Read Lecture seule.

w Write Ecriture seule.


Le contenu du fichier est perdu.
r+ Read et Write On peut lire et écrire.
Pour l’écriture, le contenu du fichier est perdu.
a Read et Write On peut lire et écrire.
L’écriture ajoute à la fin du fichier (append).
b Binaire Les différents modes
Lire des fichiers qui ne sont pas purement du texte.

rb Read et binaire Lire en lecture seule + fichier binaire.

75
# 15 Les fichiers en Python

2- Ouvrir et lire un fichier


open(.), read(.), readline(.), seek(.), tell(), close()

Etapes pour lire un fichier


Reconvert, Paris.

a- ouvrir avec open(chemin, mode) : on aun pointeur p.


b- lire avec [Link](nbChar) avec [Link](nbChar)
© Reconvert

c- fermer le pointeur avec [Link]()

Notion de curseur
a- un curseur est positionné en début du fichier.
b- read() déplacé le curseur jusqu’à la fin.
c- pour rembobiner, utiliser [Link](position)
d- obtenir la position du curseur: [Link]()

curseur

fichier Code : lecture d’un fichier

76
# 15 Les fichiers en Python

3- Ouvrir et lire un fichier avec les boucles for et with


open(.), read(.), readline(.), seek(.), tell(), close()

Avec la boucle for


for lit automatique le fichier ligne à ligne car
Reconvert, Paris.

l’objet fichier est un objet itérable. C’est la


méthode de lecture la plus simple.
© Reconvert

Avec la boucle with


with lit le fichier (et écrit dans le fichier) tout Code : lecture d’un fichier
en le fermant automatiquement (proprement)
à la fin du with.

Vous ne pouvez donc plus travailler sur un


fichier traité avec with : il faut le ré ouvrir.

with permet aussi d’écrire dans un fichier.

77
# 15 Les fichiers en Python

4- Ouvrir et écrire dans un fichier


open(.), close(), write()

Etapes pour écrire dans le fichier


a- ouvrir avec open(chemin, mode) : on obtient un pointeur p.
Reconvert, Paris.

b- écrire avec [Link](chaine)


c- fermer le pointeur avec [Link]()
© Reconvert

Code : écrire dans un fichier Code : écrire dans un fichier (boucle with)

Nota
a- avec la boucle with qui ferme automatiquement le fichier à lire/écrire.
b- Pour des fichiers binaires (word, excel, etc.) , utiliser des composants spécialisés.

78
# 15 Les fichiers en Python

5- Parcourir le système de fichiers

Le module pathlib permet de créer un objet qui représente un dossier et de


parcourir ce dossier. Path(.) permet de créer des chemins. iterdir() permet de
faire le parcours du dossier.
Reconvert, Paris.
© Reconvert

Code : exemple utilisation pathlib

79
# 15 Les fichiers en Python

5- Parcourir le système de fichiers : suite

Path(.) crée des chemins, iterdir() permet de faire le parcours du dossier,


is_dir() détermine si on a un dossier.
Reconvert, Paris.
© Reconvert

Code : exemple utilisation pathlib

80
# 16 Les fonctions en Python

1- Caractéristiques des fonctions

• Permettent de factoriser du code, se retrouvent dans des modules

• Reçoivent des données en entrée et retournent d’autres données (boîte noire)


Reconvert, Paris.

• Syntaxe simple (sans accolades), pas de typage explicite


© Reconvert

• Ce sont des objets comme d’autres

def nomfonction(paramètres) :
inst1
inst2
.
.
instn
return quelquechose

Syntaxe

81
# 16 Les fonctions en Python

2- Création de fonctions en Python

a- Une fonction simple

Code : fonction simple ([Link])


Reconvert, Paris.
© Reconvert

b- Une fonction est un objet

Code : une fonction


en paramètre

82
# 16 Les fonctions en Python

2- Création de fonctions en Python : suite

a- Une fonction dans une autre


Pour mieux organiser son code, il est possible de placer des fonctions dans
une fonction comme dans l’exemple.
Reconvert, Paris.
© Reconvert

Code : fonction interne ([Link])

83
# 16 Les fonctions en Python

3- Les paramètres des fonctions

a- Paramètres positionnels
Tous les paramètres obligatoires (positionnels) indiqués dans la parenthèse doivent
être donnés au moment de l’appel, et dans le même ordre.
Reconvert, Paris.
© Reconvert

fonction avec 2 paramètres

b- Paramètres nommés
Certains paramètres peuvent être nommés.

fonction avec 2 paramètres


nommés

84
# 16 Les fonctions en Python

3- Les paramètres des fonctions : suite

a- Mauvaise utilisation des paramètres


Le code ci-dessous sera KO : parce qu’à l’appel, il faut d’abord faire figurer les
paramètres obligatoires (positionnels).
Reconvert, Paris.
© Reconvert

fonction mal appelée


KO

SyntaxError : positional argument follows keyword argument

85
# 16 Les fonctions en Python

4- Les paramètres avec valeur par défaut

Donner des valeurs par défaut

Code : 2 valeurs par


Reconvert, Paris.

défaut
© Reconvert

Code : 1 valeur par


défaut

SyntaxError: non-default argument follows default


argument

KO : les paramètres
obligatoires d’abord

86
# 16 Les fonctions en Python

5- Les arguments variables


On peut avoir un nombre d’arguments variable en utilisant comme paramètres
*args (arguments) et **kwargs (key words arguments = arguments nommés).

On peut avoir autant d’arguments qu’on veut sans modifier la signature de la


fonction en question.
Reconvert, Paris.
© Reconvert

Appel avec des


arguments obligatoires

Arguments obligatoires
et nommés

87
# 16 Les fonctions en Python

6- Variables globales, variables locales

Variables locales
On peut créer des variables au sein d’une fonction qui ne seront pas visibles à
l’extérieur de celle-ci ; on les appelle variables locales.
Reconvert, Paris.

Nota : Si on veut modifier une variable


© Reconvert

globale dans une fonction, il faut utiliser le


mot-clé global.

variable globale

Variables locales

88
# 16 Les fonctions en Python

7- Documenter une fonction et un module, help(.)


On peut facilement documenter une fonction ou un module avec une docstring et
profiter de la documentation automatique de Python.

Fonction documentée
Reconvert, Paris.

docstring à placer juste après


la 1ère ligne.
© Reconvert

Python place la docstring dans la


variable spéciale __doc__ associée à
l’objet fonction comme étant l’un de
ses attributs (voir POO).

print(direbonjour.__doc__) affichera la
doctring.

Scruter les fonctions avec help(.)

>>>help(direbonjour)

89
# 16 Les fonctions en Python

7- Documenter une fonction et un module, help(.) : suite

Scruter les fonctions avec help(.)


Help() fonctionne sur n’importe quelle fonction d la librairie standard.
Reconvert, Paris.

>>>help(len)
© Reconvert

>>>help(print)

90
# 16 Les fonctions en Python

7- Documenter une fonction et un module, help(.) : suite 1

Afficher le prompt d’aide avec help(.)


help() sans paramètre affiche un nouveau prompt permettant d’avoir de l’aide sur
n’importe quel sujet.
Reconvert, Paris.

help>
© Reconvert

Instruction Commentaire
int Aide sur les entiers

float Aide sur les floats

Aide classée par sujets. Chaque sujet fournit


topics
un tutoriel simple.
q Quitter le prompt d’aide

Demander de l’aide dans le prompt aide.

91
# 16 Les fonctions en Python

7- Documenter une fonction et un module, help(.) : suite 2

Enregistrer votre fichier en .py (module) + documenter


En sauvegardant votre code dans des fichiers .py, vous créez des modules. Utilisez
aussi un docstring pour documenter les modules.
Reconvert, Paris.

>>>import direbonjour
[Link]
>>>help(direbonjour)
© Reconvert

Module direbonjour documenté

>>>import direbonjour
>>> [Link]("Jean", "Dutour"))
Bonjour Jean Dutour
Importer votre module Aide du module direbonjour

92
# 16 Les fonctions en Python

7- Documenter une fonction et un module, help(.) : suite 3

PYTHONPATH
Python récupère les modules importés en regardant dans la liste path du module sys
contenant tous les chemins d’importation possibles.
Reconvert, Paris.

>>>import sys
>>>[Link]
© Reconvert

>>>import pathlib Les chemins sont recherchés dans la liste


[Link]

Ajouter au path le chemin vers le dossier du .py


Vous pouvez ajouter vous-même le chemin de votre module dans le path avec la
méthode append() qui ajoute un élément à la liste.

>>>[Link](' /chemin/vers/le/dossier/de/votre/module')

93
# 16 Les fonctions en Python

8- Unpacking sur les itérables

Importance de l’itération
L'itération est très importante en Python.
On peut itérer sur n'importe quel itérable chaque fois que cela a un sens : liste, tuple,
set, str, …
Reconvert, Paris.
© Reconvert

>>>max([5,8,16])
16
>>>max((5,8,16))
16 La fonction max fonctionne pour ces 3
>>>max(set([5,8,16])) itérables
16

L'unpacking (déballage) est un raccourci qui consiste à abréger la notation lors de la


récupération des éléments d’un itérable, dans des boucles ou dans des fonctions.

94
# 16 Les fonctions en Python

8- Unpacking sur les itérables : suite

Exemples d’unpacking

>>>reponses = ['Oui','Non'] >>>(a, b) = ['Oui','Non']


>>>a = reponses[0] >>>a
>>>b = reponses[1] 'Oui'
Reconvert, Paris.

>>>a >>>b
'Oui' 'Non'
© Reconvert

>>>b
'Non'
Récup de la liste Déballage de la liste

>>>(a, b, c) = range(3)
>>>a
0
>>>b
1
>>>c
Unpacking sur le 2
générateur range(.) Déballage du range()

95
# 16 Les fonctions en Python

8- Unpacking sur les itérables : suite 1

Exemples d’unpacking

>>>a = "mol"[0] >>>(a, b, c) = "mol"


>>>b = "mol"[1] >>>a
>>>a 'm'
Reconvert, Paris.

'm' >>>b
>>>b 'o'
© Reconvert

'o' >>>c
'l'
Récup des caractères Déballage chaine

>>>a, b, c = "mol"
>>>a
'm'
>>>b
'o'
>>>c
On omet les 'l'
parenthèses sur le Déballage chaine
tuple.

96
# 16 Les fonctions en Python

8- Unpacking sur les itérables : suite 2

Exemples d’unpacking

>>>a, b, *c = range(4)
>>>a
Mettre * quand il y a trop de 0
Reconvert, Paris.

>>>b
choses à déballer par rapport au 1
© Reconvert

nombre d’éléments du tuple. >>>c


[2,3]
Déballage range()

Parcours d’un dictionnaire

97
# 16 Les fonctions en Python

8- Unpacking sur les itérables : suite 3

Unpacking sur les paramètres des fonctions avec * ou **


Reconvert, Paris.
© Reconvert

Appel sans unpacking Appel avec unpacking : on passe le


tuple (notez le *)

Appel sans unpacking,


unpacking, en passant Appel avec unpacking : on passe le dico
les valeurs du dico
directement (notez le double **)

98
# 16 Les fonctions en Python

8- Unpacking sur les itérables : suite 4

Unpacking sur les valeurs de retour


Reconvert, Paris.
© Reconvert

Retour d’un tuple sans unpacking Retour d’un tuple avec unpacking

On a l’illusion de retourner 2 valeurs, alors qu’on


retourne un tuple.

On peut utiliser le 1er élément du tuple retourné


comme x, et le 2ème comme y.

On peut continuer à utiliser le tuple comme ceci


x, y ou comme ceci (x, y).
y)

99
# 16 Les fonctions en Python

9- Listes, dictionnaires et sets en intension

Une liste en intension permet de générer des listes en compréhension (cf. maths -
ensemble en compréhension)
Reconvert, Paris.
© Reconvert

Liste en intension (1 seule ligne)


Liste explicite (4 lignes)

Liste en intension (3 lignes) Liste en intension (2 lignes

100
# 16 Les fonctions en Python

9- Listes, dictionnaires et sets en intension : suite

Filtrer dans la liste en compréhension


Reconvert, Paris.
© Reconvert

Liste en intension (1 seule ligne)

Liste explicite (5 lignes) de nombres


pairs

nombres = range(10)
carres = []
for x in nombres:
if x % 2 == 0:
[Link](x * x)
carres = [x * x for x in nombres if x % 2 == 0]

101
# 16 Les fonctions en Python

9- Listes, dictionnaires et sets en intension : suite 1

Dictionnaires et sets en intension


Reconvert, Paris.

Liste en intension
© Reconvert

Dictionnaire en intension

Ensemble (set) en intension

102
# 17 Les décorateurs en Python

1- Créer un décorateur
Un décorateur est une fonction destinée à modifier le comportement d’une autre fonction.
On dit qu’elle décore la fonction en question (notion typiquement Python).

Le décorateur est appelé comme ceci : @nomdecorateur.


Reconvert, Paris.
© Reconvert

Décore la fonction direbonjour(.)


direbonjour(.)

Décore la fonction remercier(.)

103
# 17 Les décorateurs en Python

2- Intérêt d’un décorateur


• Récolter des informations sur les appels de fonctions.

• Ajouter des fonctionnalités/infos additionnelles à un groupe de fonctions.

• Journaliser les appels d’une fonction.


Reconvert, Paris.
© Reconvert

• Eviter les répétitions.

Décorateurs pré-définis (voir POO)


@staticmethod :
pour déclarer une méthode de classe (ou statique)

@property : décorateur de propriété = la fonction devient un attribut.

Nota : Plusieurs décorateurs peuvent être appliqués à une fonction.

104
# 18 Introduction aux générateurs

1- Un générateur
Le générateur est une « sorte de fonction » qui a un potentiel de générer des données. Ces
données ne sont pas générées immédiatement après la création du générateur.

Mécanisme de génération
Reconvert, Paris.

* On applique la méthode next() (__next__()) au générateur : une donnée est générée.


* On applique encore next(), la donnée suivante est générée et la précédente oubliée.
© Reconvert

* Et ainsi de suite.

Nota : - Le générateur ne sert pas à stocker des données persistantes.


- On n’applique pas soi-même la méthode next().

Créer un générateur
Deux moyens :

1- Utiliser une liste en intension

2- Utiliser la notation des fonctions, avec une clause yield.

105
# 18 Introduction aux générateurs

2- Générateur avec une liste en intension


On peut créer un générateur à partir d’une liste en intension.
L’objet obtenu n’est pas une fonction, ni une liste.
Reconvert, Paris.
© Reconvert

Un générateur

Un générateur est itérable


On peut donc le parcourir avec for.
open() et range() sont des générateurs : on peut leur
appliquer next(). For gère le next() tout seul.

L’exception StopIteration est levée si on est à la fin du


générateur. La boucle for gère tout seul StopIteration.
Obtenir une liste

106
# 18 Introduction aux générateurs

3- Générateur avec yield


On peut créer un générateur « comme s’il s’agissait » d’une fonction.
On utilise le mot clé yield pour indiquer les ordres/étapes de génération à exécuter.

yield retourne le résultat mais ne termine pas l'exécution du générateur (elle


est juste mise en pause)
Reconvert, Paris.
© Reconvert

Un générateur avec yield

107
# 18 Introduction aux générateurs

3- Générateur avec yield : suite


Puisque c’est « comme s’il s’agissait » d’une fonction, on peut du coup passer des
paramètres au générateur.
Reconvert, Paris.
© Reconvert

Générateur avec paramètres

Générateur sans paramètres On peut générer une liste ou un tuple à


la demande.

108
# 18 Introduction aux générateurs

4- Générateur : intérêt
a- Générer des données à la demande

b- Enfermer des traitements complexes dans le générateur

c – Optimisation de la mémoire
Reconvert, Paris.
© Reconvert

d- Obtenir rapidement des structures complexes : listes, tuples.

e- etc.

109
# 19 Fonctions lambda

1- Fonctions lambda
a- Ce sont des fonctions simples définies en ligne (inline)

b- Elles sont définies sur une seule ligne

c- Il n’y a pas de mot clé def.


Reconvert, Paris.
© Reconvert

Exemple : fonction lambda

Nota : ne pas en abuser.

110
# 19 Fonctions lambda

2- Fonctions lambda
Reconvert, Paris.
© Reconvert

111
# 20 Les exceptions

1- Gestion des erreurs : les objets de type Exception


La gestion des erreurs permet d’éviter que votre programme plante. Les erreurs peuvent
être gérées en utilisant un bloc try/except et en manipulant des objets renvoyés par le
programme : les objets Exception.
Reconvert, Paris.

Opération Erreur Objets Nota : Ces objets retournés peuvent être


© Reconvert

manipulés.
>>> 1/0 Division par 0 ZeroDivisionError Peut être une classe définie par
vous-même (voir POO).
>>> 2 + "15" Types
TypeError
incompatibles Générer une erreur
>>> var Nom de variable
NameError
inconnu
>>> liste = [] La liste ne contient
IndexError
>>> liste [0] rien
>>> d = {} Gérer l’erreur
>>> d={b:1} La clé 0 n’existe pas KeyError
>>> d{0} On dispose de plusieurs mots clés : try,
except, else, finally pour gérer les
Objets de type Exception erreurs.

112
# 20 Les exceptions

2- Gérer une exception


Si l’exécution du try échoue, on attrape l’erreur dans le except : c’est dans except qu’on
fait la gestion de l’erreur.
Reconvert, Paris.
© Reconvert

Division par 0

Lire l’objet

Ouverture d’un fichier


Surtout utilisé pour le nettoyage. with nettoie tout seul : en
Division par 0 ouvrant le fichier avec with, ce bloc sera inutile.

113
# 20 Les exceptions

2- Gérer une exception : suite


On peut avoir plusieurs blocs except et propager les erreurs avec raise.
Reconvert, Paris.
© Reconvert

On ne saura pas quelle erreur sera


générée (mauvaise pratique) : il faut
toujours paramétrer le except ou propager
(remonter) les exceptions avec raise. Ou
raise Exception(.)

raise ou raise Exception("Division par 0 ")

Exception personnalisée : il peut s’agit de votre


propre classe Maclasse qui hérite de la classe
KeyError Exception ou BaseException (voir POO).

114
# 21 La programmation orientée objet

1- Créer une classe en Python


On utilise le mot clé class.
Le nom de la classe doit commencer en majuscule (UML), même si c’est pas obligé en
Python (philosophie de la responsabilité).
Reconvert, Paris.

Classe avec le mot clé pass


© Reconvert

On peut pour créer des classes rapidement pour le prototypage par exemple, avec le mot
clé pass. On ajoutera ensuite des attributs à la demande.

User
nom

Classe rapide

115
# 21 La programmation orientée objet

1- Créer une classe en Python : suite

Classe Vecteur, notion de constructeur

Vecteur
Reconvert, Paris.

+x
Fonction qui construit
© Reconvert

l’objet de ce type. +y
Diagramme

Fonction d’affichage propre


des objets de cette classe
avec print.

Une classe Python

116
# 21 La programmation orientée objet

2- Créer des objets d’une classe donnée

Instancier = créer un objet

Vecteur
Reconvert, Paris.

+x
© Reconvert

+y
Diagramme
Un objet

Le destructeur

117
# 21 La programmation orientée objet

3- Surcharge d’opérateur

On peut vouloir additionner des objets (avec +), ou utiliser d’autres opérateurs
courants comme <, >, etc. On parle de surcharge d’opérateurs.
Reconvert, Paris.
© Reconvert

Instanciation

On peut maintenant additionner nos


objets comme s’il s’agissait de vulgaires
nombres. On fait en fait :
vecteur1.__add__(vecteur2).

L’opération a néanmoins un sens


(addition de 2 vecteurs en maths) : on
ne modifie pas l’opérande +.
other c’est vecteur2
Une classe avec __add__

118
# 21 La programmation orientée objet

4- L’héritage simple

Une classe fille peut hériter d’une classe mère. Elle récupère les données et
comportement de la mère.

Animal
Reconvert, Paris.

__init__()
© Reconvert

Felin
__init__()

Chat
__init__()

Appel explicite du Hiérarchie


Classes avec héritage constructeur du parent.

119
# 21 La programmation orientée objet

4- L’héritage multiple

Une classe fille peut hériter de plus d’une classe mère : héritage multiple (en losange).
Utile parfois, très utilisé dans Django. Dans d’autres langages on utilise les interfaces.

Animal
Reconvert, Paris.

__init__()
© Reconvert

Felin Domestique
__init__() __init__()

Chat
__init__()

Diagramme
Le chat est animal qui est un
félin domestique
Classes avec héritage multiple

120
# 21 La programmation orientée objet

5- Encapsulation, getters, setters et property


On définit les getters = méthodes publiques pour accéder aux données des objets, et les setters pour
modifier ces données. Une méthode peut être « transformée » en attribut : c’est la notion de property.

Vecteur
Reconvert, Paris.

Cet attribut est private -x


+y
© Reconvert

+ getX()
+ setX()
Diagramme

Instanciation

La méthode est vue comme un attribut


Classes avec héritage multiple @property est un décorateur

121
# 21 La programmation orientée objet

6- Attributs et méthodes statiques, constantes


On n’a pas besoin d’instancier un objet pour accéder aux attributs statiques (attributs de classe) ou
pour utiliser une méthode statique (ou méthode de classe).
Reconvert, Paris.
© Reconvert

Ce décorateur indique une méthode


statique

Appel de la méthode statique

Aspect statique

122
# 21 La programmation orientée objet

7- Une classe abstraite


On ne peut créer un objet avec une telle classe. On peut l’utiliser comme classe technique ou pour
résoudre des problèmes de conception. Il n’ y a pas de mot clé en python pour la créer.

Utiliser pass dans les méthodes qui doivent être redéfinies dans la classe fille.
Reconvert, Paris.

Rendre la classe abstraite


© Reconvert

Classe abstraite La classe fille

123
Programmation

Utiliser
Reconvert, Paris.

une base de données


© Reconvert

avec Python

124
Les points abordés

Objectif : utiliser une base SQLite + une base MySQL

1- Utiliser une base SQLite

2- Utiliser une base MySQL


Reconvert, Paris.
© Reconvert

125
#1 Utiliser une base SQLite

1 - TP 1 : Créer une base SQLite


On peut créer la base avec un outils SQLite puis l’utiliser. Python peut créer aussi la base
directement avec le module sqlite3.

a- Créer un fichier
[Link]
Reconvert, Paris.

b- Puis le code ci-contre :


© Reconvert

c- Consulter la base créée avec un outils de


gestion SQLIte

126
#1 Utiliser une base SQLite

2- TP 2 : Insérer une donnée


L’insertion utilise la méthode execute de l’objet Curseur. Une requête paramétrée peut être
mise en place :
Reconvert, Paris.
© Reconvert

[Link]

127
#1 Utiliser une base SQLite

3- TP 3 : Lire les données


La sélection utilise la méthode execute de l’objet Curseur. Le fetch se fait en lisant chaque
ligne du curseur.
Reconvert, Paris.
© Reconvert

[Link]

128
#2 Utiliser une base MySQL

4- TP 4 : Utiliser MySQL
Pour une connexion avec une base C/S de type MySQL, on peut utiliser soit un connecteur
MySQL pour Python (Python 3.4), soit une librairie tierce comme pymysql.
pymysql

a- Installer pymysql : pip install pymysql


Reconvert, Paris.

b- Créer une base MySQL puis une table


© Reconvert

129
#2 Utiliser une base MySQL

4- TP 4 : Utiliser MySQL (suite)

a- Insérer le code : [Link]

b- Afficher la sélection
dans un outil MySQL
Reconvert, Paris.
© Reconvert

[Link]

130

Vous aimerez peut-être aussi