Python #8 - modularité

FormationVidéo
16 Mar 201731:09

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

00:00

😀 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.

05:02

📚 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.

10:06

🗂️ 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'.

15:09

🛠️ 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é.

20:10

🔍 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.

25:11

🛡️ 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.

30:12

🎬 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é

La modularité fait référence à la capacité de diviser un programme en plusieurs modules ou parties autonomes, ce qui facilite la maintenance et la réutilisation du code. Dans la vidéo, l'auteur explique comment la modularité est utilisée en Python, en montrant comment importer et utiliser des modules, ainsi que la création de son propre module pour organiser le code de manière efficace.

💡Fonctions lambda

Les fonctions lambda sont des fonctions anonymes en Python qui peuvent prendre zéro ou plusieurs arguments mais n'ont qu'une seule expression à évaluer. Elles sont utilisées dans la vidéo comme exemple de fonctions simples qui peuvent être créées et stockées dans des variables pour une utilisation ultérieure, illustrant leur utilité dans les tâches de programmation où une seule instruction est nécessaire.

💡Paramètres

Les paramètres sont des variables utilisées dans les définitions de fonctions pour accepter des valeurs externes. Dans le script, l'auteur mentionne la gestion des paramètres dans les fonctions et les fonctions lambda, montrant comment ces valeurs sont passées à une fonction et comment elles peuvent être utilisées pour contrôler le comportement de celle-ci.

💡Valeurs de retour

Les valeurs de retour sont les résultats que les fonctions envoient de retour au code qui les a appelées. L'auteur explique comment les fonctions, y compris les fonctions lambda, peuvent retourner des valeurs, ce qui est essentiel pour la communication entre différentes parties d'un programme.

💡Modules

Les modules en Python sont des fichiers qui contiennent du code réutilisable, comme des fonctions et des variables. Dans la vidéo, l'auteur détaille le processus d'importation de modules et montre comment créer et utiliser un module personnalisé, soulignant l'importance de la modularité pour une meilleure structure et organisation du code.

💡Importation

L'importation est le processus d'inclusion de code à partir d'un module dans un autre fichier Python. L'auteur décrit les différentes façons d'importer des modules, comme l'utilisation de l'instruction 'import' suivie du nom du module, ou la syntaxe 'from module import function' pour importer spécifiquement des fonctions d'un module.

💡Racine carrée

La racine carrée est une opération mathématique qui consiste à trouver un nombre dont la multiplication par lui-même donne un nombre donné. Dans le script, l'auteur utilise la fonction 'sqrt' du module math pour calculer la racine carrée d'un nombre, illustrant l'utilisation de modules pour effectuer des calculs mathématiques avancés.

💡Fichiers et dossiers

Les fichiers et dossiers sont des éléments de base dans l'organisation du code. Dans la vidéo, l'auteur parle de la structure de répertoire et de fichiers pour les modules, montrant comment les modules peuvent être organisés en dossiers pour une meilleure clarté et facilité de navigation dans un projet de code.

💡Tests unitaires

Les tests unitaires sont des tests de petite taille qui valident les fonctionnalités individuelles d'un programme. L'auteur mentionne l'importance de tester les modules en isolation avant de les intégrer dans un programme principal, en utilisant des conditions spécifiques pour s'assurer que chaque module fonctionne correctement de manière autonome.

💡Erreurs et gestion d'exceptions

Les erreurs et la gestion d'exceptions sont des aspects clés de la programmation pour anticiper et gérer les problèmes qui peuvent survenir lors de l'exécution d'un programme. Dans le script, l'auteur annonce qu'il couvrira la gestion des erreurs dans une prochaine vidéo, en expliquant comment utiliser des systèmes d'assertion et d'autres techniques pour gérer les erreurs de manière efficace.

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

play00:00

[Musique]

play00:09

bonjour à tous vous êtes sur votre

play00:10

formation au langage Python on va faire

play00:12

la séance 8 et on va parler de

play00:14

modularité alors c'est un terme tout

play00:16

simplement pour désigner la partie

play00:19

module on va parler de module en python

play00:20

vous allez très vite savoir à quoi ça

play00:22

correspond comment on utilise et comment

play00:24

on peut en créer également mais avant

play00:26

toute chose je voudrais revenir un petit

play00:28

peu sur les fonctionsce qu'on avait vu

play00:29

la dernière fois quoi euh j'avais pas

play00:31

parlé des fonctions lambda donc je

play00:33

voulais simplement pas mélanger un petit

play00:34

peu tout je voulais rester un peu le

play00:35

garder ça pour cette vidéo pour pas vous

play00:38

faire trop on va dire sur la vidéo

play00:39

précédente alors les fonctions vous

play00:41

maintenant vous savez un petit peu ce

play00:42

que c'est comment ça fonctionne comment

play00:43

on en crée comment on peut gérer tout ce

play00:45

qui est paramètres valeurs de retour on

play00:47

a vu tout ça dans la séance précédente

play00:49

donc si vous avez évidemment encore des

play00:50

questions par rapport à ça n'hésitez pas

play00:52

à les les poser en commentaire dans la

play00:53

vidéo bah la séance numéro 7 du coup et

play00:56

là on va vraiment parler je vous dis des

play00:58

fonctions lambda je vais vous montrer en

play00:59

quoi ça alors une fonction lambda elle a

play01:01

un rôle très très particulier c'est

play01:04

qu'elle permet en fait de faire tout

play01:05

simplement euh donc elle peut prendre

play01:07

des paramètres ou non vous allez voir

play01:08

maintenant vous savez ce que c'est hein

play01:09

voilà une fonction avec des paramètres

play01:11

ou qu' en a pas et elle va réaliser une

play01:13

seule instruction donc elle va faire un

play01:15

retour tout simplement d'une instruction

play01:17

alors on va prendre un exemple tout bête

play01:19

je vais faire par exemple lambda

play01:21

d'accord euh je vais pas lui mettre de

play01:25

de paramètres donc directement je vais

play01:27

mettre des deux points par exemple et

play01:29

après les deux points alors il y a pas

play01:30

vraiment de on peut faire comme ça parle

play01:32

même si on veut on fait comme on veut et

play01:34

là on va lui mettre tout simplement ce

play01:36

qu'elle retourne donc voilà donc moi je

play01:38

vais mettre print et je vais faire

play01:40

bonjour d'accord donc là je viens de

play01:42

définir une fonction lambda alors

play01:44

évidemment si j'essaie d'exécuter ce

play01:48

fichier vous voyez qu'il ne se passe

play01:50

rien tout simplement puisqueun fonction

play01:51

lambda là on l'a en fait défin c'est

play01:53

comme si on avait fait un pour vous vous

play01:56

faire une idée cette ligne là

play01:57

correspondrait à

play02:00

un def de rien du tout puisque la

play02:02

fonction n'a pas de nom et on aurait je

play02:04

sais pas par exemple dedans le fameux pr

play02:06

bonjour voilà en fait c'est ça plus ou

play02:08

moins qu'on a fait donc bien évid ceci

play02:10

ne fonctionne pas d'accord c'est juste

play02:11

pour vous dire l'équivalent à quoi ça

play02:12

correspondrait donc cette fonction comme

play02:14

elle est simplement défin mais qu'on l'a

play02:16

pas affecté on NAA pas appelé d'ailleurs

play02:19

ça ne va pas alors vous allez me dire

play02:20

comment on peut appeler une fonction

play02:21

lambda donc une fonction qui est anonyme

play02:22

puisqu'elle n'a pas de nom on va tout

play02:24

simplement se servir d'une variable donc

play02:26

vous allez stocker ça dans une variable

play02:27

vous lui donnez le nom que vous voulez

play02:29

d'accord l'appeler moi coucou ça on a

play02:31

une on a une super fonction lamba qui

play02:33

dit bonjour et après on a simplement à

play02:36

faire ça et comme je n'ai pas de

play02:37

paramètres comme vous avez vu je peux

play02:38

mettre des parenthèses vides et là la

play02:41

fonction son retour donc c'est un print

play02:44

de bonjour tout simplement alors à quoi

play02:46

ça sert par que tout de suite c'est que

play02:48

c'est pas tellement on va dire tellement

play02:49

parlant comme exemple c'est pour avoir

play02:51

une simplement une fonction qui ne

play02:52

ferait qu'une seule chose admettons on

play02:56

voudrait je sais pas moi simplement ça

play02:59

je vous

play03:00

montrer prix Hors Taxe on va prendre mon

play03:03

exemple là du prix TTC comme ça et on

play03:07

veut par exemple un calcul tout bê de la

play03:09

TVA ou de oui de un calcul en TTC en

play03:12

fait à partir d'une TVA à 20 %. comme

play03:14

c'est un calcul qui sera assez récurrent

play03:16

qu'on a pas envie de forcément c'est

play03:17

qu'une seule chose en fait on va pas

play03:19

forcément s'amuser à faire une fonction

play03:20

qui ne fait que cette instruction là

play03:22

c'estàd calculer le prix ttc et le

play03:24

retourner on va donc plutôt préférer

play03:26

utiliser une fonction lambda donc là on

play03:28

aura tout simplement le

play03:30

prix Hors Taxe d'accord plus alors je

play03:33

mets des parenthèses même si sont pas

play03:35

obligatoir parce que vous vous rappelez

play03:36

que le la multiplication et la division

play03:38

comme on l'a vu avec les opérateurs sont

play03:40

prioritaires mais quand on veut être sûr

play03:41

en fait que le programme voilà confonde

play03:43

pas ce trper on met les parenthèses

play03:45

comme ça on est sûr donc c'est le prix

play03:47

taxe plus le Pr taxe FO 20 % d'accordon

play03:51

ve 20 % de TV j'aurais pu fois faire zé

play03:54

et cetera j'aurais pu faire une simple

play03:56

multiplication mais là comme ça je

play03:57

détaille bien le calcul ça on va dire

play03:59

niveau bit c'est beaucoup plus clair on

play04:01

voit que 20 % lisant voilà on parle de

play04:03

la TVA 20% donc je trouve c'est beaucoup

play04:06

plus clair que mettre seulement FO 02 et

play04:08

ce donc c'est mieux voilà pr taxe et

play04:11

ceeta et on va calculer on va mettre par

play04:13

exemple TTC alors c'est un nom éviter

play04:15

d'appeler une variable seulement TTC par

play04:18

que c'est pas forcément très clair mais

play04:21

du coup là c'est beaucoup plus pratique

play04:22

si je fais

play04:23

un print de TTC de 24 par exemple il

play04:30

devrait normalement me calculer le prix

play04:31

ttc voilà donc avec une TV de 20 % de 24

play04:34

24 quelque chose sais pas quoi 24

play04:35

patates si vous voulez ça fonctionne

play04:36

aussi peu importe voilà donc c'est une

play04:40

manière très simple d'avoir une seule

play04:42

instruction d'accord voy c'est

play04:43

l'inruction qui est retournée donc c'est

play04:45

vraiment qu'une seule he pas plus on

play04:47

pourrait aussi avoir quelque chose comme

play04:49

Al jeis mettre calculer ég lambda

play04:54

A B par exemple on met ça et on fait du

play04:58

coup A+ B donc c'est une fonction lambda

play05:01

qui va retourner la somme de de nombres

play05:03

que vous lui passez et du coup on peut

play05:05

sans problème faire

play05:08

calculer 14

play05:10

27 et on aura la somme des deux d'accord

play05:14

donc c'est vraiment son utilité alors là

play05:16

tout de suite c'est pas forcément

play05:17

comment dire indispensable on peut très

play05:19

bien se passer des fonctions lambda en

play05:21

python c'est juste que vous voyez que

play05:22

c'est un mot réservé du langage donc si

play05:24

un jour vous tombez sur ce genre de

play05:26

ligne voilà vous serez pas vous vous

play05:27

demanderez pas ce que c'est vous saurez

play05:29

à quoi à quoi ça correspond qu'est-ce

play05:30

qu'une fonction lambda et à quoi ça peut

play05:31

servir donc c'est vraiment dans le cas

play05:33

où vous auriez qu'une seule instruction

play05:34

qui se répète ce qu'on avait dit dans la

play05:36

séance précédente que dès qu'on a de la

play05:37

répétition de code il est en tout cas

play05:40

intéressant et surtout intelligent de

play05:41

factoriser de mettre dans une fonction

play05:43

le problème c'est que si c'est juste une

play05:44

seule instruction ça fait peut-être un

play05:46

peu lourd de faire une fonction avec un

play05:47

hommage et cetera donc on fait une

play05:49

petite fonction lambda et on peut la

play05:50

stocker dans une variable alors

play05:52

attention comme c'est une voyez une

play05:54

variable je peux sans problème par la

play05:56

suite euh changer d'accord de nom si par

play05:59

par exemple ici je refais le lambda puis

play06:01

je le mets dans une autre variable on

play06:02

pourra changer le nom de ici calculer je

play06:04

peux très bien mettre autre chose égale

play06:06

cette même ligne là et ça va modifier

play06:08

bien évidemment la variable qui contient

play06:09

cette cette fonction lambda donc c'est

play06:11

évidemment possible mais ça vous le

play06:12

savez puisque maintenant vous connaissez

play06:15

le fonctionnement des variables donc

play06:16

voilà juste pour la petite parenthèse au

play06:18

niveau des fonctions lambda histoire de

play06:19

pouvoir passer maintenant vraiment à la

play06:20

modularité donc ça c'est vu donc vous

play06:23

voyez c'est lambda le motcé lambda ici

play06:26

z0ro paramètres ou un ou plusieurs

play06:28

séparés par des virgules si vous en avez

play06:30

plusieurs les deux points très

play06:31

importants pas les oublier et ensuite

play06:33

une seule instruction que la fonction

play06:35

réalise une seule he si vous en mettez

play06:36

plus vous voyez façon il y a pas de

play06:38

délimiteur ou autre donc c'est vraiment

play06:39

une seule on met tout sur une ligne on

play06:41

stock dans une variable pour pouvoir

play06:42

l'appeler parce que sinon on peut pas

play06:43

l'appeler voilà pour les fonctions

play06:45

lambda alors allons maintenant sur la

play06:49

modularité la modularité euh va faire

play06:52

intervenir certains modules alors un

play06:54

module jusqu'à présent on n a pas

play06:56

vraiment utilisé ou alors très très

play06:58

rapidement je vous ai montré quelques

play06:59

utilisation sans vous dire ce que

play07:01

c'était mais on va pouvoir en fait

play07:04

entender comme module une histoire de

play07:06

bibliothèque un petit peu comme on

play07:07

aurait par exemple dans le langage C si

play07:08

jamais vous vous avez connaissez ce

play07:10

langage on retrouve des bibliothèques

play07:12

avec des fonctions déjà toutes faites

play07:13

alors vous avez vu que Python il a des

play07:15

fonctions native comme le print input et

play07:17

cetera ce sont des fonctions natives du

play07:19

langage que vous pouvez directement

play07:20

utiliser mais le python n'a pas que ces

play07:22

fonctions là si vous faites par exemple

play07:24

des calculs mathématiques un petit peu

play07:25

plus poussés comme par exemple le calcul

play07:27

d'une racine carrée euh vousz vous allez

play07:29

avoir besoin d'un module de mathématique

play07:31

qui qui est fait exprès pour utiliser

play07:33

des fonctions mathématiques alors je

play07:34

vous montre un exemple je vais faire

play07:37

résultat on va faire ça par exemple on a

play07:40

une fonction Python qui est

play07:42

sqrt d'accord par exemple les racine

play07:45

carré 200 mettons je vais afficher

play07:48

résultat d'accord si là je teste le

play07:51

programme ne va pas fonctionner

play07:52

puisqu'il dit simplement que sqrt n'est

play07:55

pas défini c'est simplement que ce n'est

play07:58

pas une fonction comme voyz d'ailleurs

play07:59

elle se met en rouge ici par rapport à

play08:01

mon mon éditeur ce n'est pas une

play08:03

fonction native du langage en tout cas

play08:04

qui n'est pas intégrée comme ça

play08:06

directement il faut importer un module

play08:08

donc une bibliothèque qui est faite

play08:09

exprès pour les fonctions mathématiques

play08:12

ce module il s'appelle math tout

play08:13

simplement math donc c'est en anglais on

play08:16

va faire un import mat tout simplement

play08:20

et là comme on a juste mis ça on va

play08:23

préciser que dans le module de math on

play08:26

met un point on utilise la fameuse

play08:28

fonction sqrt et là vous allez voir si

play08:31

j'utilise on a cette fois-ci un résultat

play08:34

fonctionnel donc voilà la syntaxe pour

play08:36

importer un module alors quand vous

play08:38

faites cette syntaxe là c'est le mot

play08:40

import et le nom du module vous voyez

play08:42

que pour utiliser une fonction on est

play08:43

obligé de préciser le nom du module le

play08:45

nom du module point le nom de la

play08:47

fonction d'accord j'aurais pu simplement

play08:50

faire autrement si je veux pas m'amuser

play08:52

à répéter tout le temps math je peux

play08:54

aussi faire dans cet ordre

play08:57

là from math par exemple

play09:02

import

play09:04

sqrt ça veut dire de du module math tu

play09:08

importes la fonction sqrt et là je teste

play09:12

même chose d'accord on a plus besoin de

play09:13

répéter la chose et si admettons il y a

play09:14

plusieurs vous utilisez pratiquement

play09:16

toutes les fonctions du module vous

play09:18

pouvez aussi pour éviter de répéter le

play09:20

mot mas à chaque fois devant vous mettez

play09:21

une étoile

play09:23

voilà impimport machin alors je vais

play09:25

mettre un petit euh quelques petits

play09:28

rappels d'accord

play09:30

importer un

play09:32

module on a plusieurs façons on a import

play09:36

nom du module quand je mets chev comme

play09:39

ça c'est pour vous dire de remplacer par

play09:40

N module vous

play09:42

voulezcord ça vous remp par

play09:46

os mod vous avez

play09:50

également

play09:53

module n fonction et vous pouvez avoir

play09:57

nom de module

play10:01

alors ou là impor étoile voilà pour

play10:05

importer tout voilà trois choses qu'on a

play10:07

vu jusqu'à présent trois manières

play10:09

d'importer un module en python d'accord

play10:11

al moi je préfère en général surtout

play10:12

quand c'est des cas comme ça faire

play10:14

simplement ça comme ça au moins je sais

play10:16

où je l'utilise ça permet aussi si par

play10:18

exemple un jour vous allez voir on va

play10:20

pouvoir créer no propres modules si vous

play10:22

avez des noms qui sont identi bah

play10:23

d'éviter les conflits au moins on sait

play10:25

que là c'est la fonction sqrt donc la

play10:27

fonction racine carrée du module qui

play10:29

s'appelle comme ça au MOS on arrive à le

play10:31

voir moi personnellement je préfère

play10:32

toujours en général garder d'écriture

play10:34

après c'est un choix personnel vous

play10:35

verrez vous ce que vous préférez bien

play10:37

évidment voilà comment on va importer

play10:39

module comment on va utiliser des

play10:40

fonctions d'accord on peut avoir plein

play10:43

on peut très bien faire je sais pas

play10:46

moi sinus par exemple on va avoir

play10:51

ma 42 par exemple du coup vous allez

play10:56

faire print de sinus

play10:59

d'accord donc vous allez obtenir dans un

play11:01

résultat bizarre je vous avouris je le

play11:02

connais pas par cœur mais voilà on peut

play11:04

utiliser la fonction sinus là dedans si

play11:06

j voulu préciser il aurait fallu que je

play11:09

fasse la fameuse ligne comme ça d'accord

play11:11

pour utiliser dans ce programme il

play11:12

aurait fallu faire from math import sqrt

play11:16

et from

play11:18

import sin d'accord faut vraiment le

play11:21

faire pour chaque alors ça un module

play11:24

qu'est-ce que c'est en réalité on va

play11:25

dire techniquement qu'est-ce que c'est

play11:26

au niveau informatique c'est un euh si

play11:29

vous voulez c'est un fichier d'accord

play11:32

alors plus exactement vous verrez par la

play11:35

suite on va avoir des dossiers on va

play11:37

avoir des fichiers et on va avoir des

play11:39

fonctions d'accord ça va permettre comme

play11:41

ça de hiérarchiser et de bien organiser

play11:43

notre code et d'avoir les choses bien

play11:45

rranger correctement ok donc le module

play11:48

ça va être tout simplement un fichier là

play11:50

en fait mass c'est un fichier qui porte

play11:53

l'extension pi he Py comme on connaît et

play11:55

à l'intérieur benah il y a une fonction

play11:56

qui a été développée sqrt une fonction S

play11:59

et cetera d'accord donc voilà un module

play12:01

c'est un fichier tout bêtement et euh

play12:03

les fonctions bah ce sont des fonctions

play12:05

à l'intérieur du fichier d'accord donc

play12:07

ça maintenant vous savez un petit peu

play12:08

comment ça fonctionne alors maintenant

play12:09

vous savez comment on en importe comment

play12:11

on utilise euh les euh on va dire les

play12:14

les modules standard donc après faut

play12:16

regarder la documentation si vous voulez

play12:17

utiliser par exemple une fonction qui

play12:18

existe déjà en python sur un module du

play12:20

langage vous regardez dans la

play12:22

documentation il vous dira quel module

play12:23

importer tout simplement on peut

play12:24

retrouver par exemple import os et des

play12:27

fois on peut avoir comme os donc du

play12:30

module os on utilise la fonction

play12:32

systemme et du coup je peux utiliser en

play12:35

fait tout simplement une fonction bah de

play12:37

tu vois vous voyez de du terminal ici

play12:39

que ce soit sur Windows ou euh Linux

play12:42

donc là si je fais CLS ça va être ça par

play12:44

contre sur Linux faut mettre clear et

play12:46

cetera on utilise vraiment vous savez

play12:47

c'est comme si je faisais ça en fait ce

play12:49

que je suis en train de faire là le CLS

play12:50

que je fais là dans mon terminal ça

play12:52

correspond exactement à ça en python

play12:54

d'accord donc c'est propre au système où

play12:56

vous êtes hein si on était sur Linux ou

play12:57

Mac ce serait cl

play12:59

et cetera enfin bref c'était simplement

play13:02

pour montrer comment importer les

play13:03

modules maintenant vous savez faire ça

play13:05

on va pouvoir effectivement bien

play13:07

organiser nos programmes notamment bah

play13:09

tous nos fichiers pour pouvoir créer

play13:10

notre propre module mais c'est ce que

play13:12

nous allons faire justement on va y

play13:14

aller on va passer ici donc là on a

play13:16

notre fichier main on va créer un petit

play13:18

module euh

play13:21

toc comment on peut appeler

play13:24

[Musique]

play13:25

ça on va l'appeler module module

play13:32

tout

play13:35

simplementcage je temps pour s mme si

play13:38

parut Jey

play13:40

3 je préfère quand Mme le rajouter histo

play13:43

de problème on je peuxettén commentaire

play13:48

pe

play13:50

faire pour

play13:53

jme c'est pas trs détaillé derouver on

play13:57

va faire

play14:02

parler

play14:04

voilà on va mettre personnage et message

play14:08

par exemple du coup il fait un

play14:12

print alors on va utiliser la fameuse

play14:15

méthode format comme on avait vu

play14:18

voilà format de personnage message tout

play14:23

bêtement d'accord donc le module c'est

play14:25

player d'accord c'est le c'est ce qui

play14:27

correspond au fichier que vous avez créé

play14:30

hop jeis un petit peu voilà donc le

play14:33

fichier que vous avez créé c'est ça

play14:34

c'est un module en fait tout simplement

play14:35

voyez c'est vraiment pas compliqué c'est

play14:37

pas forcément une archive ou un gros

play14:38

truc c'est ça ce fichier est un module

play14:40

et à l'intérieur on a une fonction

play14:42

parler donc plusieurs possibilités on va

play14:44

faire une autre fonction quand même

play14:45

histoire de pas tout mélanger je pas

play14:48

c'est vraiment bon j'ai pas je suis pas

play14:49

trop trop inspiré là pour le coup mais

play14:50

c'est pas grave le truc c'est que vous

play14:53

compreniez

play14:54

bien l'exemple voilà donc parle donc il

play14:57

peut dire n'importe quoi et au revoir Mo

play14:59

dit re c'est tout voilà alors la méthode

play15:02

par défaut c'est on va faire import

play15:05

player d'accord à partir de là on a

play15:08

importé ce fichier là on l'a inclu en

play15:11

fait tout simplement au programme donc

play15:13

on peut utiliser n'importe laquelle de

play15:15

ces fonctions donc je peux sans problème

play15:16

faire un euh je sais pas moi player

play15:21

point au

play15:22

revoir voyez que je mets pas dans un

play15:24

print hein tout simplement parce que

play15:25

vous voyez cette fonction fait déjà un

play15:27

print don pas besoin de le mettre dans

play15:29

dans un print pour dire d'afficher un

play15:30

print dans un print c'est un petit peu

play15:31

inutile et là la fonction enfin le

play15:33

programme pardon l'inpréteur exécute

play15:35

bien comme il faut et dit au revoir

play15:36

d'accord je peux faire la même chose

play15:39

player

play15:41

parler voilà salut les

play15:45

abonnés hop et même

play15:49

chose oui player parler attendez j'ai

play15:54

pas fait une

play15:55

bêtise person is not oui bien sûr

play15:58

personne pardon voilà c'était une erreur

play16:01

dans ma fonction he j'avais pas mis le

play16:02

même nom de variable voilà ça fonctionne

play16:05

aussi donc ça fonctionne comme un module

play16:07

simplement que là vous avez créé

play16:08

vous-même votre module ça va permettre

play16:09

comme ça d'organiser vos vos fichiers en

play16:12

fait en différentes catégories pour

play16:14

pouvoir bien ranger un petit peu votre

play16:15

programme pas n'avoir que tout votre

play16:17

programme dans un seul fichier on ne

play16:18

fait pas comme ça on le répartit sur

play16:20

plusieurs fichiers on inclut tout ce

play16:21

qu'il faut alors pour les plus pour les

play16:23

plus attentifs vous aurez remarqué qu'il

play16:25

y a un petit dossier qui s'est ajouté

play16:26

ici avec des undcore il y en a deux

play16:28

d'ailleurs 1 2 au début de à la fin P

play16:31

cche c'est bah comme le nom l'indique

play16:33

c'est un c'est un répertoire de cache

play16:35

pour Python c'est-à-dire que là regardez

play16:37

il a créé un fichier de cache de player

play16:40

du module ce qui fait que les prochaines

play16:42

exécutions de votre programme seront

play16:43

beaucoup plus optimisées tout simplement

play16:45

donc la première fois il doit créer le

play16:47

cach comme pour un site web comme pour

play16:48

autes comme pour vos navigateur Internet

play16:50

et toutes les autres fois vous allez

play16:51

exécuter il a déjà en fait plus ou moins

play16:53

le le code euh qui est optimisé au

play16:56

niveau de vos modules ce qui va rendre

play16:58

l'exécution beaucoup plus rapide donc

play16:59

beaucoup plus optimal voilà lors du

play17:01

lancement de un prochain en tout cas

play17:03

lancement de votre programme donc ça

play17:04

c'est intéressant alors c'est fait

play17:06

automatiquement autant sur des anciennes

play17:07

versions de Python il fallait le gérer

play17:08

manuellement là à partir de Python 3

play17:10

c'est pour ça que c'est que des

play17:11

avantages tout est géré automatiquement

play17:13

donc a rien à faire pas besoin de

play17:15

forcément voilà modifier quelque chose

play17:17

dedans et toucher faut laisser les

play17:18

choses comme elles sont voilà pour ce

play17:20

module maintenant si j'avais voulu

play17:23

importer qu'une seule des deux fonctions

play17:25

d'accord j'aurais fait comme on a vu

play17:27

tout à l'heure

play17:29

from player import au revoir par exemple

play17:34

et là automatiquement la priori cette

play17:35

ligne làah l'interpréteur devrait pas

play17:37

être content effectivement vous voyez

play17:40

name

play17:41

player alors là par contre il dit player

play17:44

c'est pas Player qui est pas

play17:46

défini player point revoir non mais ça

play17:49

c'est

play17:50

bon pourquoi il ne veut pas je vais

play17:54

vaiser déjà le CH voir s'il a pas gardé

play17:56

certaines choses

play17:59

ah oui toc toc

play18:05

toc fr

play18:10

player porte au revoir maintenant

play18:12

pourtant c'est bon ça c'est

play18:17

bon on va regarder parler petite erreur

play18:25

ici pourquoi il le prend ligne 13 ah non

play18:29

c'est ici que ça bug ah oui pardon oui

play18:32

excusez-moi voilà donc c'est pas grave

play18:35

attendez on va revenir oui on a vite

play18:37

fait se tromper justement oui je viens

play18:39

de le dire en plus au début de la vidéo

play18:40

si vous mettez from vous n'avez plus

play18:42

besoin du nom du module donc vous pouvez

play18:43

directement appeler les fonction donc on

play18:45

va avoir un fonctionnement comme ça et

play18:47

là automatiquement si on essaie

play18:49

d'exécuter voilà il vous m que name

play18:51

d'accord parler donc voilà cette

play18:53

fonction là n'est pas définie parce

play18:55

qu'effectivement on a juste importé

play18:56

celle-ci donc on est obligé vous pouvoir

play18:59

utiliser les deux de faire ça et là

play19:03

évidemment il va moins brancher il va

play19:04

faire les choses comme il faut d'accord

play19:06

donc c'est vraiment plusieurs

play19:07

possibilités et sinon bah si on utilise

play19:08

tout hein autant mettre une étoile si on

play19:10

veut pas s'amuser à répéter le nom du

play19:12

module ça fonctionnera sans problème

play19:14

voilà comment créer votre propre module

play19:16

donc c'est vraiment très simple d'accord

play19:18

vous faites un fichier à part et le nom

play19:21

du module c'est le nom du fichier alors

play19:23

si on veut être encore plus organisé on

play19:25

peut faire des sous-dossiers on peut

play19:27

ranger alors moi je vais pas m'embêter à

play19:28

à faire des catégories genre pour

play19:30

l'interface graphique le cœur dire noyau

play19:32

du programme la partie réseau si par il

play19:35

y avait plusieurs catégories comme ça on

play19:36

va juste faire un dossier allez include

play19:40

on vapper comme ça par exemple et on va

play19:42

mettre player dedans pas s'embêter hop

play19:45

du coup on va ouvrir le bon une fois

play19:47

qu'il est placé là voilà alors là

play19:49

comment on appelle comment on arrive à

play19:51

se figer estce que vous voyez qu'il est

play19:52

plus dans le même dossier et bien ça ça

play19:54

fait partie du chemin du module donc

play19:57

vous allez juste faire au lieu de faire

play20:00

ça de faire import player comme il est

play20:04

dans un répertoire noubliez pas que le

play20:05

fichier main il part de l'endroit où il

play20:07

est ici donc pour accéder à player il

play20:10

doit passer par include et ensuite

play20:12

player donc on met

play20:14

include et on met un point le point

play20:16

c'est le séparateur de fichier tout

play20:18

simplement voilà et là évidemment alors

play20:21

du coup il faut pas que je me trompe à

play20:23

chaque fois là comme je fais juste un

play20:25

import il faut que je remette le nom du

play20:27

module faire attention d'accord vous

play20:29

voyez j'ai fait le j'ai pas fait gaffe

play20:30

j'étais pas attentif au début quand vous

play20:32

avez un le import tout seul faut bien

play20:34

mettre le nom du module quand vous avez

play20:35

un from et cetera vous n'êtes plus

play20:37

obligé de mettre le nom du module donc

play20:38

faut pas se gourrer sinon habité de

play20:40

faire l'erreur et là il vous dit Player

play20:42

not defined alors j'ai fait une erreur

play20:44

quelque part ou euh c'est la ligne 12

play20:48

donc ça c'est toujours l'appel qui

play20:51

bug

play20:53

importecl include pardon player ah oui

play20:58

oui bah oui ah oui je vous avais dit

play21:00

voyez c'est faut faire attention voilà

play21:03

parce que là forcément on a tout ce nom

play21:05

ici donc l'utilisation doit être faite

play21:08

comme ça si vous voyez que tout de suite

play21:10

ça devient long on commence à avoir

play21:11

quelque chose d'un petit peu long donc

play21:13

en général quand on veut simplifier on

play21:16

va faire as et on met player d'accord

play21:19

avec ce petit mot clé vous dites que il

play21:21

remplace ça par player ça permet de

play21:24

simplifier comme ça automatiquement je

play21:26

peux revenir à la syntase que j'avais au

play21:28

début en mettant juste

play21:29

player voilà ça fonctionne donc vous

play21:32

voyez c'est pas mal de petites choses

play21:33

hein donc prenez des notes nésitez pas à

play21:35

mettre sur pause et cetera bon après moi

play21:37

je vous fais des résumés en général mais

play21:38

de vraiment bien noter voilà c'est

play21:40

important par ce qu'il y a pas mal de

play21:42

choses à retenir al après ça va être une

play21:43

habitude hein vous allez prendre

play21:44

l'habitude et cetera aprs vous voyez

play21:46

hein ça m''est arrivéit en plein en

play21:47

pleine vidéo de me gourer à un moment

play21:48

j'avais oublié de de virer le nom du

play21:50

module bon ça arrive il y a pas de voilà

play21:52

faut pas vous en faire à ce niveau-là

play21:53

c'est des des petitesordinatention qu'on

play21:54

fait tout le temps mais grosso modo on

play21:56

arrive quand même de toute façon à faire

play21:57

quelque chose qui fonctionne il y a pas

play21:59

de souci à ce niveau-là donc on peut du

play22:00

coup bien organiser son code d'accord on

play22:03

peut avoir vraiment des fichiers bien

play22:04

rangés et vous voyez que le PA cche il

play22:06

s'est fait ici d'ailleurs là celui-là je

play22:08

peux même le virer par qu' a priori il

play22:11

ne devrait plus en faire puisque voilà

play22:14

puisque le player le module est ici donc

play22:15

il le fait que pour les modules que vous

play22:17

incluez voilà donc ça permet comme ça

play22:19

vous voyez il range automatiquement dans

play22:20

le bon dossier aussi il fait par rapport

play22:22

à l'endroit où ser le fichier donc c'est

play22:24

très simple comme ça on peut vraiment

play22:26

créer nos propres modules on peut les

play22:27

mettre dans des sous-dossiers de

play22:28

sous-dossier de sous-dssier vous faites

play22:30

ce que vous voulez ça fonctionne sans

play22:31

problème il y a vraiment aucun aucun

play22:33

souci avec ça alors je terminerai pour

play22:35

cette petite vidéo sur une dernière

play22:37

chose qui est importante parce que

play22:39

souvent quand on fait un vrai programme

play22:40

un d'accord on va faire comme ça je vous

play22:41

avais dit ouais qu'on procède par des

play22:43

plusieurs modules on développe des

play22:44

fichiers différents on répartit un petit

play22:46

peu les différentes fonctions les

play22:47

différentes catégories d'un programme

play22:49

mais on a souvent une phase alors vous n

play22:51

avez peut-être pas conscience vous ne

play22:52

savez peut-être pas si vous travaillez

play22:54

pas en informatique ou vous êtes pas

play22:55

encore en université ou autre mais on a

play22:57

souvent ce qu'on appelle une phase de de

play22:58

test on va tester alors ça peut être des

play23:00

tests unitaires ça peut être les DTD ça

play23:02

peut être plusieurs moyens en fait de

play23:04

tester un programme les algorithmes Cera

play23:06

de voir que le comportement attendu et

play23:08

le fonctionnement est celui que l'on

play23:10

voulait mais on peut aussi procéder par

play23:12

des vérifications très simples avec

play23:14

Python pour être sûr en fait que chaque

play23:17

partie de votre programme fait ce qu'on

play23:18

attendait tout simplement alors comment

play23:20

on va procéder alors moi mes fonctions

play23:22

font pas grand-chose d'accord donc c'est

play23:23

sûr que c'est pas non plus on va pas

play23:25

dire que ce soit très comment dire très

play23:28

passionnant ou très complexe mais quand

play23:30

même on va partir du principe que moi ça

play23:31

vous imaginez que c'est le programme

play23:32

principal le main. PI il y a plein de

play23:35

choses d'accord je viens de de créer un

play23:37

nouveau module player que je vais

play23:38

ajouter au programme je sais que tout le

play23:40

reste de mon programme pour le moment il

play23:41

est ok il y a pas de bug tout fonctionne

play23:42

pas de souci forcément si vous incluez

play23:45

un nouveau module donc un nouveau code

play23:47

vous vous attendez vous allez pas

play23:48

commencer à vous allez pas prendre le

play23:50

risque entre guillemets de corrompre

play23:52

tout le programme juste à cause d'un

play23:53

module donc ce qui est bien c'est de

play23:54

pouvoir être en mesure de tester chaque

play23:56

module indépendamment du programme qu'

play23:58

complet pour être sûr que chaque module

play24:00

tout seul il fonctionne déjà

play24:01

correctement parce que si le module tout

play24:03

seul en lui-même est buggé forcément

play24:05

quand vous allez l'utiliser dans votre

play24:07

programme principal ça va planter ça

play24:09

paraît logique donc nous on va faire ça

play24:10

on va organiser une petite série de

play24:13

tests très rapide hein très très basique

play24:15

sur le fichier player on part du

play24:16

principe que ça tout est bon mais comme

play24:18

j'ai pas envie justement de faire bugger

play24:20

tout mon programme de le corrompre je

play24:22

veux m'assurer que player tout seul sans

play24:24

utiliser par exemple sans démarrer le

play24:26

programme par ici lui tout seul il est

play24:28

capable de fonctionner on va utiliser

play24:30

une petite condition pour ça avec une

play24:32

variable réservée à Python on en par on

play24:35

en découvrira plein d'autres par la

play24:37

suite vous en faites pas donc je vous en

play24:38

parle comme ça je vous en dis pas plus

play24:40

je vous détaille pas pour le moment vous

play24:41

pouvez utiliser tel quel et toute façon

play24:43

on reviendra dessus quand on parlera

play24:44

vraiment d'objet vous allez faire un IF

play24:47

und il en faut deux c'est important

play24:50

parce que vous voyez que les éditeurs

play24:51

ils les cent donc on a l'impression

play24:52

qu'il y en a qu'un seul mais non il y en

play24:53

a deux d'accord il y a deux caractères

play24:55

on m'avait fait la remarque jeen r sur

play24:57

une vidéo en HP donc je le dis euh voilà

play25:00

vous mettez name donc c'est un moyen en

play25:02

fait de montrer des variables réservé à

play25:04

Python il mettent de double_ersore vous

play25:05

avez vu comme pour ici le PA casche voy

play25:09

c'est pareil c'est de und avant et de

play25:10

und à la fin et on va mettre ce que

play25:13

c'est égal

play25:16

à alors pareil main euh non pas des CCDI

play25:20

pardon voilà donc ça veut dire si la

play25:23

variable name donc réservée est égale à

play25:26

main qu'est-ce que je fais qu'est-ce que

play25:28

ça veut dire ça veut simplement dire que

play25:30

sur cette en fait variable là vous allez

play25:32

avoir un nom et le Main bah c'est là où

play25:34

démarre le l'exécution du programme donc

play25:37

ça veut tout simplement dire si euh

play25:39

l'interpréteur Python exécute votre

play25:41

programme à partir de ce fichier c'est

play25:43

veut dire que il commence par ce fichier

play25:45

player au lieu de commencer par bon je

play25:47

l'ai appelé main pour pouvoir me

play25:48

l'identifier mais par le fichier là

play25:49

d'accord donc qu'est-ce qui va se passer

play25:51

qu'est-ce que doit faire mon programme

play25:53

s' il se lance via ce fichier-là alors

play25:56

que c'est pas par lui que le programme

play25:57

devrait démarrer d'accord c'est-àdire

play25:58

qu'on va pas du tout tester le main ou

play26:00

les autres fichiers qu'on pourrait avoir

play26:01

on va juste tester Player et bien là on

play26:03

peut s'amuser à faire tous les tests

play26:05

qu'on veut pour tester juste ce qu'il y

play26:06

a dans ce fichier alors moi il y a pas

play26:08

grand-chose donc qu'est-ce que je vais

play26:09

tester bah bêtement je vais faire le un

play26:11

un appel des deux fonctions tout bête

play26:13

alors je vais pas le faire d'autres

play26:14

manièr parce que pour moment de toute

play26:15

façon celle-là je peux l'appeler que

play26:16

d'une manière j'ai deux paramètres

play26:17

obligatoires donc j'ai pas le choix et

play26:19

celle-là il y a pas de paramètres donc

play26:20

on va dire que j'ai pas énormément de

play26:21

test à faire à part éventuellement si je

play26:24

peux mettre ici euh du des chiffres et

play26:26

cetera et puis normalement ici j'aurai

play26:28

gérer les erreurs bah tiens le nom que

play26:29

tu as rentré c'est c'est pas un vrai nom

play26:31

ou le message il est pas correct et

play26:32

cetera mais là on n pas fait on n pas

play26:34

encore vu comment gérer les erreurs

play26:35

c'est réservé pour la séance suivante

play26:37

donc on va tout bêtement faire ça donc

play26:39

je vais mettre

play26:42

ça bonjour tout le monde voilà et puis

play26:44

on va tester la fonction au revoir voilà

play26:48

d'accord donc ce fichier imaginez qu'il

play26:50

n'existe pas main point pi n'existe plus

play26:52

pourtant c'est là que le programme est

play26:54

censé démarrer vous imaginez qu'il y a

play26:55

un gros programme de fait et il commence

play26:56

par ce fichier là quand je lance tout le

play26:58

programme c'est celui-là qui est Liu en

play26:59

premier mais nous on va exprès

play27:01

volontairement on va lire en premier le

play27:03

fichier player donc je vais faire tout

play27:06

simplement un démarrage de du fichier

play27:08

player donc si je fais

play27:10

python je vais peut-être devoir aller CD

play27:14

includes plutôt voilà donc là je suis

play27:17

d'accord dans le fichier dans le dossier

play27:19

le répertoire includes je vais faire

play27:22

python

play27:24

player. PI et là vous voyez il me fait

play27:27

ce qui se passe ici parce que il est

play27:29

rentré dans le dans la condition parce

play27:31

qu'il a vu que j'avais démarré le

play27:32

programme depuis player effectivement je

play27:34

suis j'ai lancé le programme depuis

play27:35

Player et pas depuis main comme on fait

play27:37

depuis tout à l'heure donc il exécute ça

play27:39

et cette partie làà tout ce qui est ici

play27:41

en fait d'accord tout ce qui est dans le

play27:42

if ça peut vous servir pour faire vos

play27:44

tests alors ça restera très basique

play27:46

c'est pas vraiment du test unitaire ou

play27:48

autre ou du test très orienté très

play27:50

poussé mais ça permet quand même de

play27:51

vérifier que tout fonctionne là bah je

play27:54

peux constater que mes deux fonctions

play27:55

même si là j'ai pas fait de vérification

play27:57

que c'était bien texte est là aussi qui

play27:59

a pas de chiffr et cetera pas de

play28:00

caractère non autorisé mais peu importe

play28:02

on va rester sur des choses basiques je

play28:04

peux considérer bon benah effectivement

play28:05

mes deux fonctions ont le comportement

play28:07

que je veux donc à ce moment-là vous

play28:08

pouvez d'ailleurs laisser les tests pas

play28:10

de souci je peux cette fois-ci donc hop

play28:13

on va revenir ici je peux exécuter mon

play28:16

programme d'accord depuis le Main voilà

play28:21

et je suis quand même plus assuré que

play28:23

mon programme fonctionne puisque j'ai

play28:24

déjà testé le module tout seul

play28:26

indépendamment je l'ai isolé en fait et

play28:28

je l'ai exécuté tout seul un peu comme

play28:30

un sandbox j'ai vu que tout seul il

play28:31

fonctionnait comme il faut comme je

play28:33

l'attendais donc maintenant je peux

play28:34

passer par tout le programme principal a

play28:36

priori ça devrait pas bugger voilà donc

play28:38

c'est une vérification intéressante de

play28:40

vraiment passer par cette petite

play28:42

condition vous le mettez dans tous vos

play28:43

modules à la fin comme ça juste après

play28:45

toutes vos définitions de fonction et

play28:47

vous pouvez ici faire vos petits test

play28:48

basiques pour voir que ça fonctionne

play28:49

n'importe quoi d'accord vous pouvez très

play28:51

bien mettre aussi au début hein pour

play28:53

identifier voilà je sais pas moi phase

play28:55

de test

play28:58

de player hein on peut mettre n'importe

play29:00

quoi enfin on peut mettre un un

play29:01

identifiant histoire de de s'y retrouver

play29:04

de bien s'organiser voilà d'accord comme

play29:07

ça on fait ce qu'on appelle plus ou

play29:08

moins des tests isolés même si c'est pas

play29:10

non plus quelque chose de très très

play29:12

poussé hein voilà ça reste assez

play29:13

sommaire mais c'est quand même un

play29:15

minimum qui peut être très intéressant à

play29:17

ce niveau-là et c'est de la modularité

play29:18

puisqu'on gère par rapport au module

play29:20

voilà donc je pense que j'ai fait le

play29:23

tour je voulais vraiment voilà vous

play29:24

montrer comment euh bah qu'est-ce qui

play29:25

est un module par que c'était quand même

play29:26

bien de savoir parce que ça on pe pas

play29:28

faire du python sans savoir ce qui est

play29:29

un module euh et puis bah de voir

play29:31

comment on pouvit en créer parce que

play29:32

maintenant vous savez que c'est

play29:34

simplement un ensemble de fichiers qu'on

play29:36

peut organiser dans des dossiers des

play29:38

sous-dossiers et on peut bien évidemment

play29:40

isoler chaque module que l'on développe

play29:42

pour en faire des petits tests pour

play29:44

pouvoir isoler de manière indépendante

play29:45

avant de l'appliquer à un programme donc

play29:47

très important quand vous faites un

play29:48

module vous gérez une petite phase de

play29:50

test comme ça indépendamment et une fois

play29:52

que c'est bon vous pouvez l'utiliser

play29:53

dans votre programme principal comme ça

play29:54

en priori vous évitez quand même

play29:56

beaucoup beaucoup d'erreurs par la suite

play29:57

donc ça c'est c'est un point que je

play29:58

trouve assez important ben écoutez on va

play30:00

s'arrêter là pour cette petite séance

play30:02

suite on se retrouvera pour la prochaine

play30:03

dans la séance 9 on verra comment gérer

play30:05

les erreurs pareil on va pas commencer à

play30:07

avir tout tout tous les toutes les

play30:09

possibilités pour gérer les erreurs

play30:10

puisque ça fait appel à tout ce qui est

play30:11

la partie objet du langage même si

play30:13

python est un langage objet de base donc

play30:15

on restera sur les choses on va dire

play30:17

vraiment l'essentielle mais ce sera

play30:18

vraiment de la gestion d'erreurs on va

play30:20

pas faire juste des IF des petits print

play30:22

non non on fera vraiment de la gestion

play30:23

d'erreur un peu plus poussée que ce que

play30:25

vous avez vu vite fait jusqu'à présent

play30:27

et euh B on laissera on va dire la

play30:28

partie objet queon ne verra pas

play30:29

forcément puisque ça je le réserve pour

play30:31

plus tard quand on parlera des

play30:32

exceptions donc on va déjà voir comment

play30:33

gérer les erreurs avec les systèmes de

play30:36

d'assertion et cetera et comment gérer

play30:38

les erreurs notamment en testant des

play30:39

blocs de code et en gérant bah des cas

play30:41

de figure quand ça plante quand ça ne

play30:43

plante pas et cetera et cetera donc on

play30:44

se retrouvera pour la prochaine fois

play30:46

pour cette petite séance 9U pour la

play30:47

gestion des erreurs à bientôt

play30:51

[Musique]

Rate This

5.0 / 5 (0 votes)

Related Tags
ModularitéPythonModulesFonctionsLambdaTests UnitairesOrganisation de CodeDéveloppementProgrammationTutoriels
Do you need a summary in English?