- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie on va terminer notre script en ajoutant de la documentation donc on va ajouterdes docstrings dans nos deux fonctions la fonction getUser et getUsers et on va également ajouterun loggeur pour indiquer ce qu'il se passe donc quand on va utiliser la fonction getUser et la
00:00:15 :fonction getUsers. Le loggeur on va lui faire écrire un fichier de log donc on va mettre cefichier directement dans le dossier ici donc ce dossier userGenerator et on va appeler le fichieruser.log donc user.log comme ceci pour informer de ce qu'il se passe à l'intérieur de ces fonctions
00:00:31 :donc on ne va pas faire du debug très compliqué là dans ce cas-ci c'est vraiment juste une lignequ'on va afficher quand on utilise la fonction getUser ou la fonction getUsers il n'y a pasvraiment de risque d'erreur ici donc on va juste indiquer par exemple pour cette fonction qu'on
00:00:43 :génère un utilisateur et pour cette fonction ici qu'on génère une liste de temps d'utilisateurs.Donc voilà pour les instructions vous pouvez faire pause si vous souhaitez essayer de votre côté etsinon et bien continuer avec moi et je vais vous montrer comment on va documenter tout ça. Alors la
00:00:58 :première chose à faire c'est d'aller voir dans mes extensions donc dans mes extensions ici si jetape docstring je vais juste vérifier que j'ai bien le docstringGenerator qui est installé donccette extension ici docstringGenerator de Nils Werner donc moi elle est installée et je vaisjuste aller dans les préférences de Visual Studio Code donc dans settings ici on va aller voir dans
00:01:18 :l'extension pour s'assurer qu'on utilise bien les docstrings de Google donc moi c'est celles que jepréfère utiliser donc on va aller voir dans Python docstring ici et on s'assure que dans docstringformat on utilise bien Google c'est la valeur par défaut mais il se peut que vous ayez une autre
00:01:32 :valeur ici donc pour avoir la même chose que moi utilisez le docstring de Google. Ensuite on vapouvoir générer nos docstrings à l'intérieur de Visual Studio Code donc directement dans lesfonctions ici je vais mettre trois guillemets vous voyez qu'il me propose automatiquement degénérer la docstring donc dans le summary ici c'est le résumé de ce que va faire notre fonction
00:01:51 :donc moi je vais l'écrire en anglais dans ce cas-ci quand on fait un module généralement lesdéveloppeurs de Python recommandent d'écrire en anglais même si c'est quelque chose qui va êtredestiné à des francophones puisqu'on sait jamais en fait il peut y avoir d'autres personnes à termequi vont l'utiliser donc là dans ce cas-ci ça va être une description assez simple je vais la mettre
00:02:08 :en anglais je vais dire generate a single user et pour le type donc le returns ici on a un typechaîne de caractère donc on va dire que c'est un str et pour la description on va dire toutsimplement user donc là qu'est ce qu'on fait dans cette fonction on génère un utilisateur unique
00:02:24 :et cette fonction elle retourne une chaîne de caractère qui est l'utilisateur en question onva faire la même chose pour cette fonction get users ici donc je vais remettre trois guillemetsje clique sur generate docstring pour le résumé on va dire generate a list of users cette fois-cil'argument donc qu'est ce qu'on a ici on a un argument n qui est un int donc un nombre entier
00:02:45 :et la description on va dire number of users to generate pour le retour et bien c'est une listedans ce cas-ci une liste deux chaînes de caractère donc là on peut mettre entre crochets le type deséléments qui seront à l'intérieur de notre liste donc on fait comme ceci liste crochet str et pour
00:03:01 :la description on va mettre tout simplement users avec cette fois-ci un s pour spécifier qu'on abien plusieurs utilisateurs dans ce cas-ci donc voilà pour la génération de nos docstrings on vaégalement en rajouter une directement au niveau de notre module puisque pour l'instant si jesauvegarde le script je vais ouvrir un terminal et je vais vous montrer ce que ça donne quand on
00:03:19 :importe donc si je fais python ici pour rentrer dans un interprèteur python que j'importe monmodule user et que je fais help ensuite sur user vous voyez que là on n'a pas d'aide directementsur le module on va avoir les docstrings sur les fonctions donc là on retrouve nos deux fonctions
00:03:34 :avec la docstring qui indique ce que fait cette fonction et ensuite la fonction get users icidonc ça c'est bien ça fonctionne mais on n'a pas deux docstrings au niveau du module en tantque tel donc on sait ce que font les fonctions mais on ne sait pas ce que fait le module c'est
00:03:47 :rajouter une docstring au tout début du fichier ici donc je vais remettre les trois guillemets làdans ce cas-ci je ne vais pas utiliser generate docstring puisqu'on va juste mettre une phrasedonc je n'ai pas besoin de générer quoi que ce soit on va juste indiquer ici module to generate
00:04:00 :random users tout simplement je sauvegarde le script et je vais relancer un interprèteur pythonpour vous montrer ce que ça donne maintenant qu'on utilise help donc help de user et là vous voyezqu'on a bien la docstring qui s'affiche donc c'est un peu plus clair on voit que c'est un module qui
00:04:14 :permet de générer des utilisateurs aléatoires donc on n'a même pas besoin d'aller regarder lesfonctions précises on peut directement avec cette docstring ici savoir ce que va faire notre moduledonc voilà pour la documentation de notre module maintenant on va rajouter le logger alors pour çaon va utiliser le module logging donc je vais l'importer au tout début de mon script import
00:04:33 :logging et on va également utiliser la bibliothèque pathlib pour récupérer le chemin du dossiercourant donc je pourrais utiliser un chemin relatif donc pour le logger c'est à dire mettre juste user.log
00:04:45 :dans mon cas je préfère mettre un chemin complet donc un chemin absolu c'est toujours un peu plussécuritaire en fait puisque les chemins relatifs il y a toujours un petit risque en fait en fonctionde la façon dont vous allez utiliser votre module que le chemin ne soit pas exactement celui que
00:04:59 :vous souhaitiez donc moi je préfère utiliser un chemin absolu pour ça je vais utiliser doncdepuis pathlib la classe path et on va récupérer dans une variable que je vais appeler base dirle chemin du script courant donc pour ça j'utilise la variable file donc cette variable ici je crée
00:05:15 :une instance de chemin avec cette variable donc ça ça va me retourner un chemin complet vers lefichier user.py je peux ensuite utiliser la méthode resolve qui me permettrait dans le cas de lien
00:05:26 :symbolique ou de choses du genre de m'assurer que j'ai vraiment le bon chemin vers mon scriptpuisque si vous faites un raccourci ou un lien symbolique en fait si vous n'utilisez pas resolveça peut ne pas être le vrai chemin vers le fichier si on met resolve ça va s'assurer de résoudre le
00:05:40 :chemin donc de ne pas utiliser le chemin du raccourci ou du lien symbolique mais le vraichemin où se trouve votre fichier et ensuite on va récupérer le dossier parent puisque là on ale fichier le fichier user.py nous ce qu'on veut c'est le dossier parent donc on met point
00:05:54 :parent ici et on va se retrouver avec ce dossier user generator on va pouvoir utiliser ensuitebasedir ici pour indiquer le chemin absolu pour le fichier de log donc pour configurer mon loggeurje fais logging.basicconfig donc on fait une config de base on va lui indiquer le nom vers
00:06:11 :le chemin donc filename on va concatener basedir donc notre dossier donc le dossier parent quicontient le fichier user.py et on le concatène avec la chaîne de caractère user.log tout
00:06:22 :simplement et pour finir on va renseigner le niveau de debug avec le paramètre level et pourl'instant je vais mettre logging.debug donc qui est le premier niveau on a debug ensuite on
00:06:32 :a info ensuite on a warning donc moi si je mets debug ici on va afficher tous les messages quel'on va mettre à l'intérieur de nos fonctions donc je vais mettre ces messages et on va vérifierensuite qu'ils s'écrivent bien à l'intérieur du fichier donc à l'intérieur de getuser on va faire
00:06:45 :un logging.info et on va mettre tout simplement generating user à l'intérieur de getusers onva faire la même chose avec logging.info et cette fois ci on va dire generating a list of et on
00:06:57 :va indiquer le nombre d'utilisateurs que l'on a généré donc generating a list of n users doncj'utilise un string ici pour indiquer le nombre d'utilisateurs et là encore logging.info pour
00:07:07 :mettre tout ça dans le logger donc je sauvegarde et on va pouvoir tester notre module avec cettefonction ici donc je sauvegarde je relance le script et là normalement on a un fichier delog qui a dû se créer donc je clique sur le fichier et si on regarde ici on voit qu'on a pas
00:07:22 :mal de choses qui sont indiquées on a déjà pas mal de debug qui ne nous concerne pas qui est dudebug sur le module faker qui nous dit en fait qu'il a utilisé la variable en us pour lesproviders de banque d'automotive de dress etc donc tout ça ça ne nous concerne pas et ensuite on a
00:07:37 :bien nos infos ici donc generating a list of five users generating user et donc ça c'est tous leslogins que l'on a rajouté dans notre script et donc si on ne souhaite pas avoir toutes ces infosde debug on peut mettre notre niveau ici non pas à debug mais à info donc je vais mettre info je
00:07:52 :sauvegarde je vais supprimer tout ce que j'ai dans le fichier de log et on va relancer le scriptdonc je clique sur la flèche ici ça régénère cinq utilisateurs ici je vais voir dans le fichierde log cette fois ci on a bien uniquement les informations que l'on a dans notre debug puisque
00:08:05 :nous on a utilisé logging.info ici donc on ne va pas afficher tous les messages de debug uniquementles messages d'info et si les messages d'info ne vous intéresse pas et que vous souhaitez avoiruniquement les messages d'avertissement par exemple donc message d'avertissement ou d'erreurpuisque là à partir de warning on va avoir warning, error et critical et donc si je sauvegarde et que
00:08:25 :je relance le script je vais avant ça supprimer tout ce que j'ai dans mon fichier de log donc jerelance le script et là cette fois ci à l'intérieur du fichier user.log on n'a rien qui n'est affiché
00:08:33 :puisque là on est en niveau warning et nous on a utilisé le niveau info donc ça c'est tout cequi concerne le loggeur si vous ne vous en souvenez pas retournez voir la partie sur le logging et ona donc maintenant un script qui fonctionne et qui en plus est documenté et qui a du logging donc
00:08:49 :comme ça ça permet d'avoir vraiment quelque chose de très professionnel si quelqu'un arrive sur votremodule il va savoir à quoi il sert grâce au docstring et si jamais il l'utilise et qu'il aun problème ou que quelque chose ne fonctionne pas comme prévu il aura les infos de logging ici
00:09:03 :pour savoir ce qui a été exécuté ou non avec le script que l'on a créé. Donc voilà pour cetexercice vous voyez qu'au final on a très peu de lignes de code mais ça vous permet de voir lastructure complète d'un module Python que vous pourriez créer donc après bien sûr ça peut
00:09:17 :devenir beaucoup plus complexe mais on a vraiment ici la base de ce que vous avez besoin pour fairedu code professionnel c'est à dire un module avec des fonctions qui sont documentées et un loggingqui va nous permettre de documenter ce qu'il se passe quand on exécute les fonctions de notre
00:09:32 :module. Et donc par la suite si vous faites des modules ou des packages plus compliqués forcémentvous aurez beaucoup plus de code mais la base restera la même vous aurez des fichiers Pythonqui contiennent des fonctions, des variables et le mieux c'est de donc toujours documenter cesfonctions non pas uniquement pour les utilisateurs potentiels de votre application mais également pour
00:09:51 :vous. Je peux vous garantir que même avec des scripts assez simples quand on les laisse decôté et qu'on y revient quelques mois plus tard ce n'est pas forcément toujours très évident ceque l'on fait. Par exemple ici le module Faker c'est quelque chose que vous connaissez pour
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.