- 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
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette vidéo je vais vous parler d'une instruction, l'instruction globale que jevous déconseille très fortement d'utiliser. C'est quelque chose que je vois beaucoup dans
00:00:07 :le code des débutants. C'est une instruction qu'on a tendance à utiliser quand notre coden'est pas bien construit. Donc je vais vous montrer avec un exemple ici. On a une fonction
00:00:16 :qui s'appelle getComment à laquelle on passe une note et en fonction de la note on modifiecette variable commentaire. Donc vous voyez ici que j'ai créé une variable commentaire en dehors
00:00:26 :de ma fonction qui a une valeur par défaut. Donc par défaut on va dire que tu as tout faux. Ensuiteon appelle cette fonction avec une note et l'espoir qu'on a c'est de modifier donc le commentaire enfonction de la note. Donc si la note est plus grande que 15 on dit bravo, si elle est plus
00:00:39 :grande que 10 peut mieux faire et si finalement elle est plus grande que 5 on dit attention. Doncça c'est quelque chose que quelqu'un de débutant pourrait faire mais vous allez voir que ça nefonctionne pas comme prévu. Si j'exécute le script et que je fais un print de commentaire après
00:00:54 :l'appel de ma fonction vous allez voir qu'on se retrouve avec tu as tout faux. Pourtant on aenvoyé la note de 20 donc on devrait tomber dans cette condition et modifier la valeur de commentairepour mettre bravo. En effet on peut accéder à une variable qui est définie en dehors de la fonction
00:01:08 :à l'intérieur d'une fonction donc on devrait pouvoir la modifier mais là ce n'est pas le cas. On aencore tu as tout faux qui est affiché pourtant on est rentré dans cette structure conditionnelleet on devrait donc avoir modifié cette variable. Le problème c'est qu'ici en fait Python va créer
00:01:21 :une variable locale à votre fonction donc là on va créer une variable commentaire qui n'existe quedans votre fonction et on ne va pas toucher à la variable qui est en dehors de votre fonction etc'est là que l'instruction globale peut être vue comme une solution qui est vous allez le voir très
00:01:36 :mauvaise. Mais c'est possible et donc c'est pour ça que je vous dis qu'il faut vraiment faireattention et ne pas tomber là dedans et on va voir comment on peut modifier notre script pour avoirdes fonctions qu'on appelle pures c'est à dire des fonctions qui ne vont pas commencer à manipuler
00:01:49 :des variables qui sont définies en dehors de la portée de la fonction. Donc je vais vous montrerdéjà ce qu'il ne faut pas faire donc si on met le global ici commentaire en fait on va indiquer àla fonction que dans ce cas ci on ne veut pas créer une variable locale commentaire mais on
00:02:02 :veut utiliser notre variable globale et réassigner dans cette variable ce qu'on va mettre ici donc parexemple bravo peut mieux faire ou attention. Donc si je sauvegarde et que je relance le script cette
00:02:12 :fois ci on a bien bravo qui est affiché donc vous voyez qu'en rajoutant cette instruction on indiqueà Python qu'on veut utiliser la variable globale et on peut ainsi la modifier et on se retrouve doncavec une fonction qui marche mais qui est impure donc impure dans le sens où on va avoir une
00:02:27 :fonction qui modifie des variables en dehors de la fonction. Donc comment est ce qu'on peut modifiercette fonction pour avoir une fonction qui reste pure et ne pas utiliser cette instruction globaleet bien tout simplement on ne va pas définir deux valeurs par défaut en dehors de notre fonction donc
00:02:41 :on va enlever ça ici et à la place on va rajouter un else dans notre fonction on va faire elseet on va dire que si on n'a pas ces quatre figures ici donc si la note n'est pas supérieure à 15 à10 ou à 5 et bien on va dire tu as tout faux donc ça c'est dans le cas où on a une note qui est
00:02:56 :inférieure à 5 on va dire tu as tout faux et ce qu'on va faire c'est retourner avec l'instructionreturn notre commentaire. Donc là ce qu'on fait c'est qu'on fait juste créer une variable locale
00:03:05 :commentaire à l'intérieur de notre fonction et une fois qu'on a déterminé en fonction de notrestructure conditionnelle ici quelle valeur doit prendre cette variable on va retourner la valeurde cette variable donc là on retourne commentaire donc on va retourner en fait une des chaînes decaractère définie ici et ce qu'il faut faire et bien c'est la récupérer en dehors de la fonction
00:03:23 :donc là on fait une variable commentaire qui cette fois ci va être différente de cette variable quiest définie dans l'espace local donc on crée une variable dans l'espace global de notre script quiva être égale à la valeur qu'on a défini ici dans notre fonction et donc là on pourrait l'appeler
00:03:38 :n'importe comment cette variable on peut l'appeler c et ça marcherait de la même façon il fautvraiment voir qu'on a tout simplement une variable qui est propre à la fonction ensuite on retournela valeur de cette variable et on la récupère dans une autre variable qui peut s'appeler n'importe
00:03:50 :comment dans l'espace global. Ce qu'on pourrait faire également pour simplifier encore plus cettefonction c'est directement retourner sans même avoir besoin de créer de variables donc retournerla chaîne de caractère directement donc là on pourrait mettre des returns à chaque fois puisqu'onn'a pas vraiment besoin de créer une variable qui ne sert pas à grand chose dans ce cas ci
00:04:07 :puisqu'on fait juste retourner par la suite la valeur de cette variable donc on peut directementmettre des returns et récupérer en fonction de la note que l'on envoie la chaîne de caractèrecorrespondante et récupérer donc cette chaîne de caractère dans une variable dans l'espaceglobal. Donc là si je sauvegarde et que je relance le script on a bien bravo si on envoie 20 si j'en
00:04:25 :vois 0 on va avoir tu as tout faux et si j'en vois par exemple 7 on va se retrouver avec le casde figure dans lequel on est ici donc avec le elif note plus grand que 5 et on va retournerattention. Donc voilà comment modifier la fonction pour avoir une fonction pure une fonction qui
00:04:41 :n'utilise pas cette instruction globale vraiment je vous dis ça fait presque dix ans que je programmeavec Python et je n'ai jamais mais vraiment jamais eu besoin d'utiliser cette instruction globaledonc dès que vous commencez à partir là dedans à vous dire que vous allez solutionner votre codeen mettant l'instruction globale généralement arrêtez vous posez vous pensez à comment vous
00:04:59 :avez conçu votre code puisque généralement utiliser global ça signifie plutôt que notrecode est mal pensé donc ce n'est vraiment pas la solution à privilégier il faut plutôt modifiervotre code pour avoir des fonctions qui ne commencent pas à modifier des valeurs en dehorsde la fonction ça peut créer ce qu'on appelle des effets de bord et ça peut devenir très difficile
00:05:16 :à débugger en cas de problème. Donc voilà pour cette petite parenthèse sur l'instruction globaleforcément c'est le genre de choses que vous allez apprendre sur le long terme vous ne pouvez pas dupremier coup savoir comment créer des fonctions qui vont être parfaites donc ne vous en faitespas au début il se peut que vous soyez un petit peu mélangé avec tout ça et que vous soyez tenté
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.