Python #8 - modularité
Summary
TLDRLa formation en Python de la séance 8 se concentre sur la modularité et l'utilisation des modules. Le script introduit les fonctions lambda et explique leur utilité pour des tâches simples et répétitives. Il démontre comment créer et importer des modules, les utiliser dans un programme et organiser le code en fichiers distincts pour une meilleure structure et évitement de conflits. La formation insiste également sur l'importance de tester les modules en isolation avant de les intégrer dans un programme principal pour assurer une exécution sans erreurs.
Takeaways
- 😀 La formation aborde le sujet de la modularité en Python et son importance dans la structure et l'organisation du code.
- 📚 Le script rappelle les notions de base sur les fonctions en Python, y compris les fonctions lambda qui sont introduites comme un moyen de créer des fonctions anonymes pour des tâches spécifiques.
- 🔧 Les fonctions lambda sont utiles pour des calculs simples et répétitifs, comme le calcul du prix TTC à partir d'un prix Hors Taxe et d'une TVA donnée.
- 📦 La modularité est expliquée en termes de modules en Python, qui sont des fichiers Python (.py) contenant des fonctions réutilisables.
- 🔗 L'importation de modules est détaillée, montrant différentes façons d'importer des fonctions spécifiques ou l'ensemble d'un module en utilisant l'astérisque (*).
- 🛠️ Le script illustre comment créer son propre module en Python en créant un fichier séparé contenant des fonctions et en les important dans d'autres parties du programme.
- 📁 L'organisation des modules dans des dossiers et sous-dossiers est présentée comme une bonne pratique pour une meilleure gestion et clarté du code.
- 🔄 L'utilisation de la variable `if __name__ == "__main__"` est expliquée comme un moyen de tester les modules indépendamment du reste du programme pour s'assurer qu'ils fonctionnent correctement avant d'être intégrés.
- 🚀 Le script met en évidence l'importance de la phase de test pour chaque module avant son intégration dans le programme principal, afin d'éviter les erreurs et les conflits de code.
- 👍 L'exemple de module `player` est utilisé tout au long du script pour illustrer les concepts de création et d'utilisation de modules, ainsi que pour tester les fonctions qu'il contient.
- 📝 Le script conclut en prévoyant le prochain sujet de formation, qui sera la gestion des erreurs en Python, incluant l'utilisation de systèmes d'assertion et la gestion de cas spécifiques.
Q & A
Qu'est-ce que la modularité en programmation Python?
-La modularité en programmation Python fait référence à l'utilisation de modules, qui sont des parties autonomes de code réutilisable organisées dans des fichiers distincts. Cela permet de structurer et de simplifier le code, en évitant la redondance et en facilitant la maintenance.
Quels sont les avantages de l'utilisation des fonctions lambda en Python?
-Les fonctions lambda en Python sont utiles pour définir des fonctions simples et courtes en une seule instruction. Elles peuvent prendre zéro, un ou plusieurs paramètres et effectuer une seule opération, ce qui est particulièrement pratique pour les tâches de calcul rapides et simples.
Comment créer une fonction lambda en Python?
-Pour créer une fonction lambda en Python, on utilise le mot-clé 'lambda', suivi éventuellement des paramètres (s'ils existent), des deux points ':', et enfin de l'expression qui constitue la fonction.
Comment appelle-t-on une fonction lambda en Python?
-Pour appeler une fonction lambda en Python, on l'assigne généralement à une variable en utilisant l'opérateur d'affectation, puis on l'appelle comme n'importe quelle autre fonction en utilisant la variable suivie de parenthèses, même si elle n'a pas de paramètres.
Quel est le rôle des modules mathématiques en Python?
-Les modules mathématiques en Python fournissent un ensemble de fonctions mathématiques prédéfinies, telles que la racine carrée (sqrt), le sinus (sin), le cosinus (cos), etc. Ils sont utilisés pour effectuer des calculs mathématiques avancés qui ne sont pas pris en charge par les fonctions natives du langage.
Comment importer un module en Python?
-Pour importer un module en Python, on utilise la syntaxe 'import nom_du_module'. Si on souhaite utiliser une seule fonction du module, on peut également utiliser 'from nom_du_module import fonction'. Pour importer toutes les fonctions d'un module, on utilise 'from nom_du_module import *'.
Quelle est la différence entre 'import nom_du_module' et 'from nom_du_module import fonction'?
-L'instruction 'import nom_du_module' importe l'ensemble du module, et pour utiliser ses fonctions, il est nécessaire de les qualifier avec le nom du module. En revanche, 'from nom_du_module import fonction' importe uniquement la fonction spécifiée, et elle peut être appelée directement sans qualification.
Comment créer son propre module en Python?
-Pour créer son propre module en Python, on crée simplement un nouveau fichier Python (avec l'extension .py) contenant les fonctions ou les variables que l'on souhaite. Ce fichier peut être organisé dans des dossiers et des sous-dossiers pour une meilleure structure.
Pourquoi est-il important de tester les modules indépendamment avant de les intégrer dans un programme principal?
-Il est important de tester les modules indépendamment pour s'assurer qu'ils fonctionnent correctement avant de les intégrer dans un programme principal. Cela permet d'éviter les erreurs et les conflits qui pourraient survenir lors de l'exécution du programme complet.
Comment utiliser la condition '__name__' pour tester un module indépendamment en Python?
-La condition '__name__' est utilisée pour déterminer si le module est exécuté en tant que programme principal ou s'il est importé dans un autre module. Si '__name__' est égal à '__main__', cela signifie que le module est lancé en tant que programme principal et non importé. On peut placer les tests de module à l'intérieur d'un bloc 'if __name__ == "__main__":' pour s'assurer qu'ils ne s'exécutent que lorsque le module est lancé en tant que programme principal.
Outlines
😀 Introduction à la modularité et rappel sur les fonctions lambda
Le script ouvre avec une présentation de la session 8 du cours de Python, focalisant sur la modularité et les modules en Python. Le professeur rappelle également les fonctions lambda vues précédemment, soulignant leur utilité pour des tâches simples. Il introduit l'idée de stocker des fonctions lambda dans des variables pour un usage plus facile et donne un aperçu de leur syntaxe et de leur fonctionnement.
📚 Explication des fonctions lambda et de leur utilité
Le paragraphe explique en détail ce qu'une fonction lambda est et comment elle peut être utilisée en Python. Il est indiqué que les fonctions lambda sont anonymes, prennent zéro ou plusieurs paramètres et effectuent une seule instruction. Des exemples sont donnés pour illustrer leur utilisation, notamment pour des calculs simples comme l'addition ou la conversion d'un prix HT à TTC.
🗂️ Introduction aux modules et leur importation
Le script passe à la discussion des modules en Python, expliquant qu'ils sont essentiellement des fichiers Python (.py) contenant des fonctions. Il est abordé l'importation de modules, y compris l'utilisation de 'import' pour inclure un module entier, 'from module import function' pour importer spécifiquement des fonctions et 'from module import *' pour importer tout le module. Des exemples pratiques sont donnés, montrant comment utiliser des fonctions mathématiques du module 'math'.
🛠️ Création et utilisation de modules personnalisés
Le professeur entre dans la création de modules Python personnalisés, démontrant comment écrire un fichier Python simple peut être utilisé comme module. Il crée un exemple de module 'player' avec des fonctions 'parler' et 'au_revoir', et explique comment importer et utiliser ces fonctions dans un autre script. Il insiste sur l'importance de l'organisation du code en utilisant des modules pour éviter les conflits de noms et améliorer la lisibilité.
🔍 Test des modules indépendamment du programme principal
Le script insiste sur l'importance de tester les modules en isolation avant de les intégrer dans un programme principal pour éviter les erreurs. Il explique comment utiliser une condition avec la variable réservée 'name' pour exécuter des tests lorsque le module est lancé en tant que programme principal. Le professeur donne un exemple de test de base pour le module 'player', en appelant simplement les fonctions qu'il contient.
🛡️ La gestion des erreurs et les tests de base
Le paragraphe conclut en mentionnant que la prochaine session du cours couvrira la gestion des erreurs en Python, en abordant des méthodes plus avancées que les simples instructions 'if' et 'print'. Il est question de l'importance de tester les blocs de code et de gérer les exceptions pour assurer le bon déroulement du programme, en prévoyant des cas d'erreur et en s'assurant que le programme se comporte comme prévu.
🎬 Conclusion et anticipation de la prochaine session
La fin du script annonce la prochaine session du cours qui traitera de la gestion des erreurs en profondeur, en utilisant des outils tels que les assertions et en expliquant comment gérer les différents scénarios d'erreur. Le professeur invite les étudiants à se retrouver pour la session 9, promettant un contenu informatif et utile pour améliorer la robustesse de leurs programmes Python.
Mindmap
Keywords
💡Modularité
💡Fonctions lambda
💡Paramètres
💡Valeurs de retour
💡Modules
💡Importation
💡Racine carrée
💡Fichiers et dossiers
💡Tests unitaires
💡Erreurs et gestion d'exceptions
Highlights
Formation sur la modularité en Python et son importance dans la programmation.
Rappel des fonctions lambda et de leur rôle spécifique en Python.
Explication de la syntaxe et de l'utilisation des fonctions lambda.
Démonstration de la création et de l'appel d'une fonction lambda.
Utilisation de fonctions lambda pour des calculs simples et répétitifs.
Importance de la modularité pour l'organisation et la réutilisabilité du code.
Description de ce qu'est un module en Python et son comparaison avec les bibliothèques d'autres langages.
Guide pratique pour importer et utiliser des modules en Python.
Exemple de l'importation de la fonction 'sqrt' à partir du module 'math'.
Méthodes pour importer des modules et leurs fonctions spécifiques en Python.
Explication de la structure d'un module Python et de son contenu.
Création d'un module personnalisé avec une fonction 'parler'.
Utilisation de modules pour organiser et structurer le code en fichiers distincts.
Importance de tester les modules individuellement avant de les intégrer dans un programme principal.
Technique pour tester les modules indépendamment à l'aide de la variable réservée '__name__'.
Méthode pour exécuter des tests de base sur les modules pour s'assurer de leur bon fonctionnement.
Conseils pour la gestion des erreurs et des exceptions dans les prochaines sessions de formation.
Transcripts
[Musique]
bonjour à tous vous êtes sur votre
formation au langage Python on va faire
la séance 8 et on va parler de
modularité alors c'est un terme tout
simplement pour désigner la partie
module on va parler de module en python
vous allez très vite savoir à quoi ça
correspond comment on utilise et comment
on peut en créer également mais avant
toute chose je voudrais revenir un petit
peu sur les fonctionsce qu'on avait vu
la dernière fois quoi euh j'avais pas
parlé des fonctions lambda donc je
voulais simplement pas mélanger un petit
peu tout je voulais rester un peu le
garder ça pour cette vidéo pour pas vous
faire trop on va dire sur la vidéo
précédente alors les fonctions vous
maintenant vous savez un petit peu ce
que c'est comment ça fonctionne comment
on en crée comment on peut gérer tout ce
qui est paramètres valeurs de retour on
a vu tout ça dans la séance précédente
donc si vous avez évidemment encore des
questions par rapport à ça n'hésitez pas
à les les poser en commentaire dans la
vidéo bah la séance numéro 7 du coup et
là on va vraiment parler je vous dis des
fonctions lambda je vais vous montrer en
quoi ça alors une fonction lambda elle a
un rôle très très particulier c'est
qu'elle permet en fait de faire tout
simplement euh donc elle peut prendre
des paramètres ou non vous allez voir
maintenant vous savez ce que c'est hein
voilà une fonction avec des paramètres
ou qu' en a pas et elle va réaliser une
seule instruction donc elle va faire un
retour tout simplement d'une instruction
alors on va prendre un exemple tout bête
je vais faire par exemple lambda
d'accord euh je vais pas lui mettre de
de paramètres donc directement je vais
mettre des deux points par exemple et
après les deux points alors il y a pas
vraiment de on peut faire comme ça parle
même si on veut on fait comme on veut et
là on va lui mettre tout simplement ce
qu'elle retourne donc voilà donc moi je
vais mettre print et je vais faire
bonjour d'accord donc là je viens de
définir une fonction lambda alors
évidemment si j'essaie d'exécuter ce
fichier vous voyez qu'il ne se passe
rien tout simplement puisqueun fonction
lambda là on l'a en fait défin c'est
comme si on avait fait un pour vous vous
faire une idée cette ligne là
correspondrait à
un def de rien du tout puisque la
fonction n'a pas de nom et on aurait je
sais pas par exemple dedans le fameux pr
bonjour voilà en fait c'est ça plus ou
moins qu'on a fait donc bien évid ceci
ne fonctionne pas d'accord c'est juste
pour vous dire l'équivalent à quoi ça
correspondrait donc cette fonction comme
elle est simplement défin mais qu'on l'a
pas affecté on NAA pas appelé d'ailleurs
ça ne va pas alors vous allez me dire
comment on peut appeler une fonction
lambda donc une fonction qui est anonyme
puisqu'elle n'a pas de nom on va tout
simplement se servir d'une variable donc
vous allez stocker ça dans une variable
vous lui donnez le nom que vous voulez
d'accord l'appeler moi coucou ça on a
une on a une super fonction lamba qui
dit bonjour et après on a simplement à
faire ça et comme je n'ai pas de
paramètres comme vous avez vu je peux
mettre des parenthèses vides et là la
fonction son retour donc c'est un print
de bonjour tout simplement alors à quoi
ça sert par que tout de suite c'est que
c'est pas tellement on va dire tellement
parlant comme exemple c'est pour avoir
une simplement une fonction qui ne
ferait qu'une seule chose admettons on
voudrait je sais pas moi simplement ça
je vous
montrer prix Hors Taxe on va prendre mon
exemple là du prix TTC comme ça et on
veut par exemple un calcul tout bê de la
TVA ou de oui de un calcul en TTC en
fait à partir d'une TVA à 20 %. comme
c'est un calcul qui sera assez récurrent
qu'on a pas envie de forcément c'est
qu'une seule chose en fait on va pas
forcément s'amuser à faire une fonction
qui ne fait que cette instruction là
c'estàd calculer le prix ttc et le
retourner on va donc plutôt préférer
utiliser une fonction lambda donc là on
aura tout simplement le
prix Hors Taxe d'accord plus alors je
mets des parenthèses même si sont pas
obligatoir parce que vous vous rappelez
que le la multiplication et la division
comme on l'a vu avec les opérateurs sont
prioritaires mais quand on veut être sûr
en fait que le programme voilà confonde
pas ce trper on met les parenthèses
comme ça on est sûr donc c'est le prix
taxe plus le Pr taxe FO 20 % d'accordon
ve 20 % de TV j'aurais pu fois faire zé
et cetera j'aurais pu faire une simple
multiplication mais là comme ça je
détaille bien le calcul ça on va dire
niveau bit c'est beaucoup plus clair on
voit que 20 % lisant voilà on parle de
la TVA 20% donc je trouve c'est beaucoup
plus clair que mettre seulement FO 02 et
ce donc c'est mieux voilà pr taxe et
ceeta et on va calculer on va mettre par
exemple TTC alors c'est un nom éviter
d'appeler une variable seulement TTC par
que c'est pas forcément très clair mais
du coup là c'est beaucoup plus pratique
si je fais
un print de TTC de 24 par exemple il
devrait normalement me calculer le prix
ttc voilà donc avec une TV de 20 % de 24
24 quelque chose sais pas quoi 24
patates si vous voulez ça fonctionne
aussi peu importe voilà donc c'est une
manière très simple d'avoir une seule
instruction d'accord voy c'est
l'inruction qui est retournée donc c'est
vraiment qu'une seule he pas plus on
pourrait aussi avoir quelque chose comme
Al jeis mettre calculer ég lambda
A B par exemple on met ça et on fait du
coup A+ B donc c'est une fonction lambda
qui va retourner la somme de de nombres
que vous lui passez et du coup on peut
sans problème faire
calculer 14
27 et on aura la somme des deux d'accord
donc c'est vraiment son utilité alors là
tout de suite c'est pas forcément
comment dire indispensable on peut très
bien se passer des fonctions lambda en
python c'est juste que vous voyez que
c'est un mot réservé du langage donc si
un jour vous tombez sur ce genre de
ligne voilà vous serez pas vous vous
demanderez pas ce que c'est vous saurez
à quoi à quoi ça correspond qu'est-ce
qu'une fonction lambda et à quoi ça peut
servir donc c'est vraiment dans le cas
où vous auriez qu'une seule instruction
qui se répète ce qu'on avait dit dans la
séance précédente que dès qu'on a de la
répétition de code il est en tout cas
intéressant et surtout intelligent de
factoriser de mettre dans une fonction
le problème c'est que si c'est juste une
seule instruction ça fait peut-être un
peu lourd de faire une fonction avec un
hommage et cetera donc on fait une
petite fonction lambda et on peut la
stocker dans une variable alors
attention comme c'est une voyez une
variable je peux sans problème par la
suite euh changer d'accord de nom si par
par exemple ici je refais le lambda puis
je le mets dans une autre variable on
pourra changer le nom de ici calculer je
peux très bien mettre autre chose égale
cette même ligne là et ça va modifier
bien évidemment la variable qui contient
cette cette fonction lambda donc c'est
évidemment possible mais ça vous le
savez puisque maintenant vous connaissez
le fonctionnement des variables donc
voilà juste pour la petite parenthèse au
niveau des fonctions lambda histoire de
pouvoir passer maintenant vraiment à la
modularité donc ça c'est vu donc vous
voyez c'est lambda le motcé lambda ici
z0ro paramètres ou un ou plusieurs
séparés par des virgules si vous en avez
plusieurs les deux points très
importants pas les oublier et ensuite
une seule instruction que la fonction
réalise une seule he si vous en mettez
plus vous voyez façon il y a pas de
délimiteur ou autre donc c'est vraiment
une seule on met tout sur une ligne on
stock dans une variable pour pouvoir
l'appeler parce que sinon on peut pas
l'appeler voilà pour les fonctions
lambda alors allons maintenant sur la
modularité la modularité euh va faire
intervenir certains modules alors un
module jusqu'à présent on n a pas
vraiment utilisé ou alors très très
rapidement je vous ai montré quelques
utilisation sans vous dire ce que
c'était mais on va pouvoir en fait
entender comme module une histoire de
bibliothèque un petit peu comme on
aurait par exemple dans le langage C si
jamais vous vous avez connaissez ce
langage on retrouve des bibliothèques
avec des fonctions déjà toutes faites
alors vous avez vu que Python il a des
fonctions native comme le print input et
cetera ce sont des fonctions natives du
langage que vous pouvez directement
utiliser mais le python n'a pas que ces
fonctions là si vous faites par exemple
des calculs mathématiques un petit peu
plus poussés comme par exemple le calcul
d'une racine carrée euh vousz vous allez
avoir besoin d'un module de mathématique
qui qui est fait exprès pour utiliser
des fonctions mathématiques alors je
vous montre un exemple je vais faire
résultat on va faire ça par exemple on a
une fonction Python qui est
sqrt d'accord par exemple les racine
carré 200 mettons je vais afficher
résultat d'accord si là je teste le
programme ne va pas fonctionner
puisqu'il dit simplement que sqrt n'est
pas défini c'est simplement que ce n'est
pas une fonction comme voyz d'ailleurs
elle se met en rouge ici par rapport à
mon mon éditeur ce n'est pas une
fonction native du langage en tout cas
qui n'est pas intégrée comme ça
directement il faut importer un module
donc une bibliothèque qui est faite
exprès pour les fonctions mathématiques
ce module il s'appelle math tout
simplement math donc c'est en anglais on
va faire un import mat tout simplement
et là comme on a juste mis ça on va
préciser que dans le module de math on
met un point on utilise la fameuse
fonction sqrt et là vous allez voir si
j'utilise on a cette fois-ci un résultat
fonctionnel donc voilà la syntaxe pour
importer un module alors quand vous
faites cette syntaxe là c'est le mot
import et le nom du module vous voyez
que pour utiliser une fonction on est
obligé de préciser le nom du module le
nom du module point le nom de la
fonction d'accord j'aurais pu simplement
faire autrement si je veux pas m'amuser
à répéter tout le temps math je peux
aussi faire dans cet ordre
là from math par exemple
import
sqrt ça veut dire de du module math tu
importes la fonction sqrt et là je teste
même chose d'accord on a plus besoin de
répéter la chose et si admettons il y a
plusieurs vous utilisez pratiquement
toutes les fonctions du module vous
pouvez aussi pour éviter de répéter le
mot mas à chaque fois devant vous mettez
une étoile
voilà impimport machin alors je vais
mettre un petit euh quelques petits
rappels d'accord
importer un
module on a plusieurs façons on a import
nom du module quand je mets chev comme
ça c'est pour vous dire de remplacer par
N module vous
voulezcord ça vous remp par
os mod vous avez
également
module n fonction et vous pouvez avoir
nom de module
alors ou là impor étoile voilà pour
importer tout voilà trois choses qu'on a
vu jusqu'à présent trois manières
d'importer un module en python d'accord
al moi je préfère en général surtout
quand c'est des cas comme ça faire
simplement ça comme ça au moins je sais
où je l'utilise ça permet aussi si par
exemple un jour vous allez voir on va
pouvoir créer no propres modules si vous
avez des noms qui sont identi bah
d'éviter les conflits au moins on sait
que là c'est la fonction sqrt donc la
fonction racine carrée du module qui
s'appelle comme ça au MOS on arrive à le
voir moi personnellement je préfère
toujours en général garder d'écriture
après c'est un choix personnel vous
verrez vous ce que vous préférez bien
évidment voilà comment on va importer
module comment on va utiliser des
fonctions d'accord on peut avoir plein
on peut très bien faire je sais pas
moi sinus par exemple on va avoir
ma 42 par exemple du coup vous allez
faire print de sinus
d'accord donc vous allez obtenir dans un
résultat bizarre je vous avouris je le
connais pas par cœur mais voilà on peut
utiliser la fonction sinus là dedans si
j voulu préciser il aurait fallu que je
fasse la fameuse ligne comme ça d'accord
pour utiliser dans ce programme il
aurait fallu faire from math import sqrt
et from
import sin d'accord faut vraiment le
faire pour chaque alors ça un module
qu'est-ce que c'est en réalité on va
dire techniquement qu'est-ce que c'est
au niveau informatique c'est un euh si
vous voulez c'est un fichier d'accord
alors plus exactement vous verrez par la
suite on va avoir des dossiers on va
avoir des fichiers et on va avoir des
fonctions d'accord ça va permettre comme
ça de hiérarchiser et de bien organiser
notre code et d'avoir les choses bien
rranger correctement ok donc le module
ça va être tout simplement un fichier là
en fait mass c'est un fichier qui porte
l'extension pi he Py comme on connaît et
à l'intérieur benah il y a une fonction
qui a été développée sqrt une fonction S
et cetera d'accord donc voilà un module
c'est un fichier tout bêtement et euh
les fonctions bah ce sont des fonctions
à l'intérieur du fichier d'accord donc
ça maintenant vous savez un petit peu
comment ça fonctionne alors maintenant
vous savez comment on en importe comment
on utilise euh les euh on va dire les
les modules standard donc après faut
regarder la documentation si vous voulez
utiliser par exemple une fonction qui
existe déjà en python sur un module du
langage vous regardez dans la
documentation il vous dira quel module
importer tout simplement on peut
retrouver par exemple import os et des
fois on peut avoir comme os donc du
module os on utilise la fonction
systemme et du coup je peux utiliser en
fait tout simplement une fonction bah de
tu vois vous voyez de du terminal ici
que ce soit sur Windows ou euh Linux
donc là si je fais CLS ça va être ça par
contre sur Linux faut mettre clear et
cetera on utilise vraiment vous savez
c'est comme si je faisais ça en fait ce
que je suis en train de faire là le CLS
que je fais là dans mon terminal ça
correspond exactement à ça en python
d'accord donc c'est propre au système où
vous êtes hein si on était sur Linux ou
Mac ce serait cl
et cetera enfin bref c'était simplement
pour montrer comment importer les
modules maintenant vous savez faire ça
on va pouvoir effectivement bien
organiser nos programmes notamment bah
tous nos fichiers pour pouvoir créer
notre propre module mais c'est ce que
nous allons faire justement on va y
aller on va passer ici donc là on a
notre fichier main on va créer un petit
module euh
toc comment on peut appeler
[Musique]
ça on va l'appeler module module
tout
simplementcage je temps pour s mme si
parut Jey
3 je préfère quand Mme le rajouter histo
de problème on je peuxettén commentaire
pe
faire pour
jme c'est pas trs détaillé derouver on
va faire
parler
voilà on va mettre personnage et message
par exemple du coup il fait un
print alors on va utiliser la fameuse
méthode format comme on avait vu
voilà format de personnage message tout
bêtement d'accord donc le module c'est
player d'accord c'est le c'est ce qui
correspond au fichier que vous avez créé
hop jeis un petit peu voilà donc le
fichier que vous avez créé c'est ça
c'est un module en fait tout simplement
voyez c'est vraiment pas compliqué c'est
pas forcément une archive ou un gros
truc c'est ça ce fichier est un module
et à l'intérieur on a une fonction
parler donc plusieurs possibilités on va
faire une autre fonction quand même
histoire de pas tout mélanger je pas
c'est vraiment bon j'ai pas je suis pas
trop trop inspiré là pour le coup mais
c'est pas grave le truc c'est que vous
compreniez
bien l'exemple voilà donc parle donc il
peut dire n'importe quoi et au revoir Mo
dit re c'est tout voilà alors la méthode
par défaut c'est on va faire import
player d'accord à partir de là on a
importé ce fichier là on l'a inclu en
fait tout simplement au programme donc
on peut utiliser n'importe laquelle de
ces fonctions donc je peux sans problème
faire un euh je sais pas moi player
point au
revoir voyez que je mets pas dans un
print hein tout simplement parce que
vous voyez cette fonction fait déjà un
print don pas besoin de le mettre dans
dans un print pour dire d'afficher un
print dans un print c'est un petit peu
inutile et là la fonction enfin le
programme pardon l'inpréteur exécute
bien comme il faut et dit au revoir
d'accord je peux faire la même chose
player
parler voilà salut les
abonnés hop et même
chose oui player parler attendez j'ai
pas fait une
bêtise person is not oui bien sûr
personne pardon voilà c'était une erreur
dans ma fonction he j'avais pas mis le
même nom de variable voilà ça fonctionne
aussi donc ça fonctionne comme un module
simplement que là vous avez créé
vous-même votre module ça va permettre
comme ça d'organiser vos vos fichiers en
fait en différentes catégories pour
pouvoir bien ranger un petit peu votre
programme pas n'avoir que tout votre
programme dans un seul fichier on ne
fait pas comme ça on le répartit sur
plusieurs fichiers on inclut tout ce
qu'il faut alors pour les plus pour les
plus attentifs vous aurez remarqué qu'il
y a un petit dossier qui s'est ajouté
ici avec des undcore il y en a deux
d'ailleurs 1 2 au début de à la fin P
cche c'est bah comme le nom l'indique
c'est un c'est un répertoire de cache
pour Python c'est-à-dire que là regardez
il a créé un fichier de cache de player
du module ce qui fait que les prochaines
exécutions de votre programme seront
beaucoup plus optimisées tout simplement
donc la première fois il doit créer le
cach comme pour un site web comme pour
autes comme pour vos navigateur Internet
et toutes les autres fois vous allez
exécuter il a déjà en fait plus ou moins
le le code euh qui est optimisé au
niveau de vos modules ce qui va rendre
l'exécution beaucoup plus rapide donc
beaucoup plus optimal voilà lors du
lancement de un prochain en tout cas
lancement de votre programme donc ça
c'est intéressant alors c'est fait
automatiquement autant sur des anciennes
versions de Python il fallait le gérer
manuellement là à partir de Python 3
c'est pour ça que c'est que des
avantages tout est géré automatiquement
donc a rien à faire pas besoin de
forcément voilà modifier quelque chose
dedans et toucher faut laisser les
choses comme elles sont voilà pour ce
module maintenant si j'avais voulu
importer qu'une seule des deux fonctions
d'accord j'aurais fait comme on a vu
tout à l'heure
from player import au revoir par exemple
et là automatiquement la priori cette
ligne làah l'interpréteur devrait pas
être content effectivement vous voyez
name
player alors là par contre il dit player
c'est pas Player qui est pas
défini player point revoir non mais ça
c'est
bon pourquoi il ne veut pas je vais
vaiser déjà le CH voir s'il a pas gardé
certaines choses
ah oui toc toc
toc fr
player porte au revoir maintenant
pourtant c'est bon ça c'est
bon on va regarder parler petite erreur
ici pourquoi il le prend ligne 13 ah non
c'est ici que ça bug ah oui pardon oui
excusez-moi voilà donc c'est pas grave
attendez on va revenir oui on a vite
fait se tromper justement oui je viens
de le dire en plus au début de la vidéo
si vous mettez from vous n'avez plus
besoin du nom du module donc vous pouvez
directement appeler les fonction donc on
va avoir un fonctionnement comme ça et
là automatiquement si on essaie
d'exécuter voilà il vous m que name
d'accord parler donc voilà cette
fonction là n'est pas définie parce
qu'effectivement on a juste importé
celle-ci donc on est obligé vous pouvoir
utiliser les deux de faire ça et là
évidemment il va moins brancher il va
faire les choses comme il faut d'accord
donc c'est vraiment plusieurs
possibilités et sinon bah si on utilise
tout hein autant mettre une étoile si on
veut pas s'amuser à répéter le nom du
module ça fonctionnera sans problème
voilà comment créer votre propre module
donc c'est vraiment très simple d'accord
vous faites un fichier à part et le nom
du module c'est le nom du fichier alors
si on veut être encore plus organisé on
peut faire des sous-dossiers on peut
ranger alors moi je vais pas m'embêter à
à faire des catégories genre pour
l'interface graphique le cœur dire noyau
du programme la partie réseau si par il
y avait plusieurs catégories comme ça on
va juste faire un dossier allez include
on vapper comme ça par exemple et on va
mettre player dedans pas s'embêter hop
du coup on va ouvrir le bon une fois
qu'il est placé là voilà alors là
comment on appelle comment on arrive à
se figer estce que vous voyez qu'il est
plus dans le même dossier et bien ça ça
fait partie du chemin du module donc
vous allez juste faire au lieu de faire
ça de faire import player comme il est
dans un répertoire noubliez pas que le
fichier main il part de l'endroit où il
est ici donc pour accéder à player il
doit passer par include et ensuite
player donc on met
include et on met un point le point
c'est le séparateur de fichier tout
simplement voilà et là évidemment alors
du coup il faut pas que je me trompe à
chaque fois là comme je fais juste un
import il faut que je remette le nom du
module faire attention d'accord vous
voyez j'ai fait le j'ai pas fait gaffe
j'étais pas attentif au début quand vous
avez un le import tout seul faut bien
mettre le nom du module quand vous avez
un from et cetera vous n'êtes plus
obligé de mettre le nom du module donc
faut pas se gourrer sinon habité de
faire l'erreur et là il vous dit Player
not defined alors j'ai fait une erreur
quelque part ou euh c'est la ligne 12
donc ça c'est toujours l'appel qui
bug
importecl include pardon player ah oui
oui bah oui ah oui je vous avais dit
voyez c'est faut faire attention voilà
parce que là forcément on a tout ce nom
ici donc l'utilisation doit être faite
comme ça si vous voyez que tout de suite
ça devient long on commence à avoir
quelque chose d'un petit peu long donc
en général quand on veut simplifier on
va faire as et on met player d'accord
avec ce petit mot clé vous dites que il
remplace ça par player ça permet de
simplifier comme ça automatiquement je
peux revenir à la syntase que j'avais au
début en mettant juste
player voilà ça fonctionne donc vous
voyez c'est pas mal de petites choses
hein donc prenez des notes nésitez pas à
mettre sur pause et cetera bon après moi
je vous fais des résumés en général mais
de vraiment bien noter voilà c'est
important par ce qu'il y a pas mal de
choses à retenir al après ça va être une
habitude hein vous allez prendre
l'habitude et cetera aprs vous voyez
hein ça m''est arrivéit en plein en
pleine vidéo de me gourer à un moment
j'avais oublié de de virer le nom du
module bon ça arrive il y a pas de voilà
faut pas vous en faire à ce niveau-là
c'est des des petitesordinatention qu'on
fait tout le temps mais grosso modo on
arrive quand même de toute façon à faire
quelque chose qui fonctionne il y a pas
de souci à ce niveau-là donc on peut du
coup bien organiser son code d'accord on
peut avoir vraiment des fichiers bien
rangés et vous voyez que le PA cche il
s'est fait ici d'ailleurs là celui-là je
peux même le virer par qu' a priori il
ne devrait plus en faire puisque voilà
puisque le player le module est ici donc
il le fait que pour les modules que vous
incluez voilà donc ça permet comme ça
vous voyez il range automatiquement dans
le bon dossier aussi il fait par rapport
à l'endroit où ser le fichier donc c'est
très simple comme ça on peut vraiment
créer nos propres modules on peut les
mettre dans des sous-dossiers de
sous-dossier de sous-dssier vous faites
ce que vous voulez ça fonctionne sans
problème il y a vraiment aucun aucun
souci avec ça alors je terminerai pour
cette petite vidéo sur une dernière
chose qui est importante parce que
souvent quand on fait un vrai programme
un d'accord on va faire comme ça je vous
avais dit ouais qu'on procède par des
plusieurs modules on développe des
fichiers différents on répartit un petit
peu les différentes fonctions les
différentes catégories d'un programme
mais on a souvent une phase alors vous n
avez peut-être pas conscience vous ne
savez peut-être pas si vous travaillez
pas en informatique ou vous êtes pas
encore en université ou autre mais on a
souvent ce qu'on appelle une phase de de
test on va tester alors ça peut être des
tests unitaires ça peut être les DTD ça
peut être plusieurs moyens en fait de
tester un programme les algorithmes Cera
de voir que le comportement attendu et
le fonctionnement est celui que l'on
voulait mais on peut aussi procéder par
des vérifications très simples avec
Python pour être sûr en fait que chaque
partie de votre programme fait ce qu'on
attendait tout simplement alors comment
on va procéder alors moi mes fonctions
font pas grand-chose d'accord donc c'est
sûr que c'est pas non plus on va pas
dire que ce soit très comment dire très
passionnant ou très complexe mais quand
même on va partir du principe que moi ça
vous imaginez que c'est le programme
principal le main. PI il y a plein de
choses d'accord je viens de de créer un
nouveau module player que je vais
ajouter au programme je sais que tout le
reste de mon programme pour le moment il
est ok il y a pas de bug tout fonctionne
pas de souci forcément si vous incluez
un nouveau module donc un nouveau code
vous vous attendez vous allez pas
commencer à vous allez pas prendre le
risque entre guillemets de corrompre
tout le programme juste à cause d'un
module donc ce qui est bien c'est de
pouvoir être en mesure de tester chaque
module indépendamment du programme qu'
complet pour être sûr que chaque module
tout seul il fonctionne déjà
correctement parce que si le module tout
seul en lui-même est buggé forcément
quand vous allez l'utiliser dans votre
programme principal ça va planter ça
paraît logique donc nous on va faire ça
on va organiser une petite série de
tests très rapide hein très très basique
sur le fichier player on part du
principe que ça tout est bon mais comme
j'ai pas envie justement de faire bugger
tout mon programme de le corrompre je
veux m'assurer que player tout seul sans
utiliser par exemple sans démarrer le
programme par ici lui tout seul il est
capable de fonctionner on va utiliser
une petite condition pour ça avec une
variable réservée à Python on en par on
en découvrira plein d'autres par la
suite vous en faites pas donc je vous en
parle comme ça je vous en dis pas plus
je vous détaille pas pour le moment vous
pouvez utiliser tel quel et toute façon
on reviendra dessus quand on parlera
vraiment d'objet vous allez faire un IF
und il en faut deux c'est important
parce que vous voyez que les éditeurs
ils les cent donc on a l'impression
qu'il y en a qu'un seul mais non il y en
a deux d'accord il y a deux caractères
on m'avait fait la remarque jeen r sur
une vidéo en HP donc je le dis euh voilà
vous mettez name donc c'est un moyen en
fait de montrer des variables réservé à
Python il mettent de double_ersore vous
avez vu comme pour ici le PA casche voy
c'est pareil c'est de und avant et de
und à la fin et on va mettre ce que
c'est égal
à alors pareil main euh non pas des CCDI
pardon voilà donc ça veut dire si la
variable name donc réservée est égale à
main qu'est-ce que je fais qu'est-ce que
ça veut dire ça veut simplement dire que
sur cette en fait variable là vous allez
avoir un nom et le Main bah c'est là où
démarre le l'exécution du programme donc
ça veut tout simplement dire si euh
l'interpréteur Python exécute votre
programme à partir de ce fichier c'est
veut dire que il commence par ce fichier
player au lieu de commencer par bon je
l'ai appelé main pour pouvoir me
l'identifier mais par le fichier là
d'accord donc qu'est-ce qui va se passer
qu'est-ce que doit faire mon programme
s' il se lance via ce fichier-là alors
que c'est pas par lui que le programme
devrait démarrer d'accord c'est-àdire
qu'on va pas du tout tester le main ou
les autres fichiers qu'on pourrait avoir
on va juste tester Player et bien là on
peut s'amuser à faire tous les tests
qu'on veut pour tester juste ce qu'il y
a dans ce fichier alors moi il y a pas
grand-chose donc qu'est-ce que je vais
tester bah bêtement je vais faire le un
un appel des deux fonctions tout bête
alors je vais pas le faire d'autres
manièr parce que pour moment de toute
façon celle-là je peux l'appeler que
d'une manière j'ai deux paramètres
obligatoires donc j'ai pas le choix et
celle-là il y a pas de paramètres donc
on va dire que j'ai pas énormément de
test à faire à part éventuellement si je
peux mettre ici euh du des chiffres et
cetera et puis normalement ici j'aurai
gérer les erreurs bah tiens le nom que
tu as rentré c'est c'est pas un vrai nom
ou le message il est pas correct et
cetera mais là on n pas fait on n pas
encore vu comment gérer les erreurs
c'est réservé pour la séance suivante
donc on va tout bêtement faire ça donc
je vais mettre
ça bonjour tout le monde voilà et puis
on va tester la fonction au revoir voilà
d'accord donc ce fichier imaginez qu'il
n'existe pas main point pi n'existe plus
pourtant c'est là que le programme est
censé démarrer vous imaginez qu'il y a
un gros programme de fait et il commence
par ce fichier là quand je lance tout le
programme c'est celui-là qui est Liu en
premier mais nous on va exprès
volontairement on va lire en premier le
fichier player donc je vais faire tout
simplement un démarrage de du fichier
player donc si je fais
python je vais peut-être devoir aller CD
includes plutôt voilà donc là je suis
d'accord dans le fichier dans le dossier
le répertoire includes je vais faire
python
player. PI et là vous voyez il me fait
ce qui se passe ici parce que il est
rentré dans le dans la condition parce
qu'il a vu que j'avais démarré le
programme depuis player effectivement je
suis j'ai lancé le programme depuis
Player et pas depuis main comme on fait
depuis tout à l'heure donc il exécute ça
et cette partie làà tout ce qui est ici
en fait d'accord tout ce qui est dans le
if ça peut vous servir pour faire vos
tests alors ça restera très basique
c'est pas vraiment du test unitaire ou
autre ou du test très orienté très
poussé mais ça permet quand même de
vérifier que tout fonctionne là bah je
peux constater que mes deux fonctions
même si là j'ai pas fait de vérification
que c'était bien texte est là aussi qui
a pas de chiffr et cetera pas de
caractère non autorisé mais peu importe
on va rester sur des choses basiques je
peux considérer bon benah effectivement
mes deux fonctions ont le comportement
que je veux donc à ce moment-là vous
pouvez d'ailleurs laisser les tests pas
de souci je peux cette fois-ci donc hop
on va revenir ici je peux exécuter mon
programme d'accord depuis le Main voilà
et je suis quand même plus assuré que
mon programme fonctionne puisque j'ai
déjà testé le module tout seul
indépendamment je l'ai isolé en fait et
je l'ai exécuté tout seul un peu comme
un sandbox j'ai vu que tout seul il
fonctionnait comme il faut comme je
l'attendais donc maintenant je peux
passer par tout le programme principal a
priori ça devrait pas bugger voilà donc
c'est une vérification intéressante de
vraiment passer par cette petite
condition vous le mettez dans tous vos
modules à la fin comme ça juste après
toutes vos définitions de fonction et
vous pouvez ici faire vos petits test
basiques pour voir que ça fonctionne
n'importe quoi d'accord vous pouvez très
bien mettre aussi au début hein pour
identifier voilà je sais pas moi phase
de test
de player hein on peut mettre n'importe
quoi enfin on peut mettre un un
identifiant histoire de de s'y retrouver
de bien s'organiser voilà d'accord comme
ça on fait ce qu'on appelle plus ou
moins des tests isolés même si c'est pas
non plus quelque chose de très très
poussé hein voilà ça reste assez
sommaire mais c'est quand même un
minimum qui peut être très intéressant à
ce niveau-là et c'est de la modularité
puisqu'on gère par rapport au module
voilà donc je pense que j'ai fait le
tour je voulais vraiment voilà vous
montrer comment euh bah qu'est-ce qui
est un module par que c'était quand même
bien de savoir parce que ça on pe pas
faire du python sans savoir ce qui est
un module euh et puis bah de voir
comment on pouvit en créer parce que
maintenant vous savez que c'est
simplement un ensemble de fichiers qu'on
peut organiser dans des dossiers des
sous-dossiers et on peut bien évidemment
isoler chaque module que l'on développe
pour en faire des petits tests pour
pouvoir isoler de manière indépendante
avant de l'appliquer à un programme donc
très important quand vous faites un
module vous gérez une petite phase de
test comme ça indépendamment et une fois
que c'est bon vous pouvez l'utiliser
dans votre programme principal comme ça
en priori vous évitez quand même
beaucoup beaucoup d'erreurs par la suite
donc ça c'est c'est un point que je
trouve assez important ben écoutez on va
s'arrêter là pour cette petite séance
suite on se retrouvera pour la prochaine
dans la séance 9 on verra comment gérer
les erreurs pareil on va pas commencer à
avir tout tout tous les toutes les
possibilités pour gérer les erreurs
puisque ça fait appel à tout ce qui est
la partie objet du langage même si
python est un langage objet de base donc
on restera sur les choses on va dire
vraiment l'essentielle mais ce sera
vraiment de la gestion d'erreurs on va
pas faire juste des IF des petits print
non non on fera vraiment de la gestion
d'erreur un peu plus poussée que ce que
vous avez vu vite fait jusqu'à présent
et euh B on laissera on va dire la
partie objet queon ne verra pas
forcément puisque ça je le réserve pour
plus tard quand on parlera des
exceptions donc on va déjà voir comment
gérer les erreurs avec les systèmes de
d'assertion et cetera et comment gérer
les erreurs notamment en testant des
blocs de code et en gérant bah des cas
de figure quand ça plante quand ça ne
plante pas et cetera et cetera donc on
se retrouvera pour la prochaine fois
pour cette petite séance 9U pour la
gestion des erreurs à bientôt
[Musique]
5.0 / 5 (0 votes)