Session du 17 juin 2025 à 21h00
Programmation Orientée Objet (POO)
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Maîtriser l’underscore pour écrire mieux en Python
Découvrez les usages pratiques de l’underscore en Python, de l’interpréteur interactif aux boucles, pour écrire un code plus clair et expressif.
00:00:00 :Donc, on va commencer. Ce soir, comme je l'ai dit tout à l'heure, on va faire un petitpeu de connaissance Python tranquille. On va voir l'utilisation de l'Underscore. L'Underscore
00:00:27 :va avoir des fonctions assez diverses et variées dans Python. Et du coup, j'ai lu un petitarticle là-dessus il n'y a pas longtemps, et je me suis dit, tiens, on peut parler deça. C'est une chose sympa à voir. On va commencer par une première utilisation
00:00:47 :relativement basique. Je vais vous partager mon écran. Au niveau de la taille d'écriture,est-ce que c'est bon pour tout le monde ? Oui. Pas besoin de faire plus gros. Ça me va aussi.
00:01:19 :C'est bien. Alors, une des premières fonctions d'Underscore, on va commencer par quelque chosed'assez basique. Ça va être plutôt dans la console, dans la ligne de commande. Je vais faire
00:01:35 :un petit chalpiton. Quand on oublie qu'on est sur Mac. Tout bêtement, mettons que je vais faireune audition. Allez, 16 plus 23. Là, c'est 39. Si je veux réafficher le résultat de l'audition,
00:02:02 :je marque un underscore. Il me le renvoie. Donc là, sur ce cas-là, c'est pas forcémentun problème. Il suffit de regarder la ligne dessus. On va se faire un petit truc comme ça.
00:02:32 :Print. Allez, on va faire un truc simple. OK. Et là, si je recrée mon underscore,boum, il me garde 39. En fait, il va garder en mémoire la dernière valeur qui a été calculée
00:02:52 :avec l'underscore. D'accord ? Donc si, mettons, je recrée une autre petite opération,on va maintenant faire 20 divisé par 5. Je vais ressortir mon petit script. Voilà. Et là,
00:03:11 :si je ressors mon underscore, boum, il me ressort bien mon 4. Là, c'est un petit peu gadget commeça, mais quand vous faites de la ligne de commande, ça peut être intéressant de savoirqu'avec l'underscore, vous pouvez retrouver la dernière valeur calculée. Maintenant,
00:03:29 :là, ça peut devenir intéressant. Vous faites plusieurs opérations en ligne de commande. Alors,on va revenir sur l'interdiction. Mettons, allez, on va faire 10 plus 5. OK. Donc, on sait que 15,
00:03:42 :c'est une valeur. Allez, mettons, c'est la somme calculée depuis le début des opérations. Je faisma petite boucle comme tout à l'heure. Et puis, cette valeur calculée, je vais y rajouter 10. Et
00:03:58 :tout bêtement, je fais mon underscore, plus 10. Je peux l'utiliser comme une variable. D'accord?Est-ce que vous aviez déjà vu ça? Non, non, non plus. Donc voilà, première petite astuce sur
00:04:23 :l'underscore qui n'est pas souvent connue. Alors, une autre qu'on peut voir un peu souvent. Alors,j'ai créé le fichier là. Voilà. Bah, typiquement, pour ce que je viens de faire, vous êtes en
00:04:36 :train d'écrire un script et vous avez besoin de faire une boucle. Alors, généralement,qu'est-ce qu'on va faire? On va faire notre boucle, FOR. Alors, on va utiliser, on va être
00:04:44 :tous hétérogénial avec notre I in range 1000. OK. Hop, voilà. Print I. OK. Là, je pense quetout le monde l'a déjà fait plus ou moins. Le problème, c'est que là, on n'est pas à l'échelle
00:05:05 :des choses. Mon I, je ne l'utilise jamais. Donc, c'est un peu bête de nommer une variable et puissurtout de créer des noms de variables et puis après d'être embêté avec le shadowing de variablesoù on va se retrouver avec des noms de variables qui sont équivalents. Et là, on commence à
00:05:19 :mélanger un petit peu de pitons dans ce qu'il doit faire. Et bien là aussi, à la place de lui,on peut tout simplement utiliser l'underscore. Hop. Et là, si je lance mon script, vous allez
00:05:38 :voir, ça ne pose aucun souci. Je lance mon script. Et vous voyez, il m'a bien fait mon itération,il m'a bien affiché mes différentes valeurs et ainsi de suite. Donc ça, c'est une autre
00:05:56 :utilisation d'underscore qui n'est pas souvent, souvent utilisée. On ne la voit pas des masses,mais elle est quand même très pratique. Plutôt que de déclarer une variable, c'est valable pour
00:06:05 :une boucle, c'est valable pour un wipe. On va dire, plutôt que de donner un nom un peu générique,prendre le risque de faire un shadowing avec une autre variable, pour une variable qu'on vautiliser juste pour une boucle ou un wipe ou autre, vous pouvez utiliser l'underscore à la place.
00:06:21 :On va dire que c'est un peu un nom de variable poubelle. Nous, on s'en fout,mais vous avez besoin qu'il y ait une variable, et bien voilà, vous n'avez créé pas ça.
00:06:32 :Bonsoir Johanna. Alors cet aspect-là de l'underscore, vous l'aviez déjà vu aussi?Oui.Ah bon, Thomas?Non, je ne l'avais jamais vu.Voilà, vous voyez que c'est très pratique, comme ça, quand vous avez besoin d'utiliser,on va dire, une variable poubelle, plutôt que de creuser la tête à trouver un nom qui n'est pas
00:07:09 :forcément évident, vous mettez votre petit underscore à la place et ça passe très bien.Je crois qu'il y a quelqu'un qui pense sur le chat.
00:07:22 :Non, c'est moi qui viens de laver la main.Ah d'accord. Alors j'ai un grand écran, mais pour vous montrer le truc, je suis obligé de
00:07:32 :cacher un petit peu le chat et tout ça, donc j'ai les notifications en casque, mais je ne vois pasce qui se passe en fait.
00:07:40 :J'avais cru comprendre que l'underscore, dans ce contexte-là, c'était pour montrer qu'onn'utilisait pas la variable dans la boucle, donc là tu l'utilises dans le fond, donc…Tu peux essayer de la l'utiliser, après, tu ne pourras pas l'utiliser en dehors de la boucle.
00:07:58 :Non, non, effectivement, mais je pensais que si c'était comme, par exemple, tu voudraispinter 100 fois, 1000 fois Hello World, tu ne l'utiliserais pas du tout, donc tu n'auraispas à nommer cette variable-là, tu l'utiliserais l'underscore dans ce cas-là.
00:08:14 :Voilà, mais là, tu vois, pour la boucle, je ne sais plus, je pourrais te faire une caractère en fait.En fait, peu importe. Merci.De rien.
00:08:25 :Alors, une autre petite astuce qui existe aussi avec l'underscore, c'est…Alors, on va dire que c'est juste une astuce de lecture.Alors, mettons que je crée une variable, que je vais appeler gros nombre.
00:08:46 :Ok, allez.Voilà. Alors, qui est capable en un instant de me dire quel est ce nom ?Là, tout collé comme ça, c'est compliqué.Je vous imagine tous avec votre sourire en train de compter les 0 par 3.
00:09:08 :Et ça, j'ai bien compris qu'on pouvait les séparer par l'underscore, ça.Voilà.Là, tu peux exactement… Donc là, on peut les séparer par l'underscore.Alors, si je fais comme ça, ça ne va pas le faire.
00:09:19 :Hop.Hop.Hop.Et donc là, ça reste, malgré tout, Python va quand même me comprendre pas mal.Si je fais print…J'ai pas les doigts en face du cahier ce soir.
00:09:39 :Gros nombre, hop, et que je fais plus 1.Je lance mon script.Boum, il m'a bien fait l'addition.Il l'a bien considéré, malgré tout, comme un intérêt.
00:09:52 :Mais par contre, pour rendre les chiffres, surtout quand vous commencez à avoir des gros chiffres comme ça,plus visibles dans votre script,là, ça devient intéressant d'utiliser les underscores et de les rajouter justementpour bien se séparer par trois chiffres.
00:10:05 :Est-ce qu'on peut avoir le print avec l'underscore aussi, pour le relire mieux ?Alors, avoir dans le résultat, non.Ça, tu pourras pas, par contre.
00:10:21 :Avoir un séparateur millier dans le résultat, en gros.Ouais, je vois ce que tu veux dire, mais tu peux pas le remettre avec les underscores comme il y a en haut,dans le print là, dans la console.
00:10:32 :Là, il faudrait faire une modification de ton terminal pour que tu fasses automatiquement ce genre d'impression.Et là, on sort un peu du côté Python.
00:10:40 :Ou alors, tu pourrais...Ouais, il faudrait faire une logique algorithmique pour créer cette impression-là,mais là, on n'est plus du tout dans le simple.OK.
00:10:58 :OK, OK.OK, OK.Alors ça, c'est pour l'européenne.Allez, pour votre culture.Hop.Hop.Ça, vous savez dans quel pays on les explique comme ça ?
00:11:22 :Il y a que les Américains qui font pas comme les autres.Je veux dire, c'est en Amérique.Non.C'est au Japon.Au Japon, ils ne séparent pas par centaines comme nous, donc par trois chiffres, mais par milliers.
00:11:42 :Donc quand vous verrez des prix écrits au Japon ou des valeurs chiffrées,si vous allez sur des sites qui sont purement japonais,ben 30 000, ils vont les faire comme ça.
00:11:54 :Voilà.Ça fait une culture générale.Voilà.Petite info qui n'a rien à voir avec Python, mais qui je trouvais quand même un petit peu intéressante.
00:12:08 :Parce qu'en fait, ils ont un mot pour dire 10, un mot pour dire 100,un nouveau pour dire 1 000 et un mot pour dire 10 000.
00:12:15 :Donc c'est pour ça qu'eux, ils ont un mot spécifique pour dire 10 000,donc du coup, c'est pour ça qu'ils séparent par quatre,alors que nous, on arrive à 1 000 et 10 000, c'est déjà une composition de mots.
00:12:26 :Voilà, voilà.Donc là, c'est vraiment une astuce au niveau des underscores,on va revenir à Python,pour pouvoir rendre plus visibles les gros chiffresque vous allez rentrer en variables statiques,par exemple dans votre script ou autre,pour pouvoir être capable de le revenir, savoir à quoi ça correspond.
00:12:47 :Donc à savoir que le simple effet de mettre des underscores dans le chiffrene change pas le titre,parce que là, on aurait pu imaginer que par des centaines,parce que là, on aurait pu imaginer que par des centaines,Python, il y a des underscores,donc il y a des chiffres, il y a des caractères de délai,
00:13:01 :ils considèrent que finalement,ce n'est plus un entier, mais c'est un string.Ben non, lui, ça ne le gêne pas,il considère toujours que c'est un entieret il fait abstraction de ses underscorespour l'enregistrement en mémoire.
00:13:14 :Les underscores, comme ça, ils marchent aussi sur les nombres à virgules ?Euh...Je ne suis pas sûr, mais la meilleure façon de voir...C'est ça.
00:13:30 :Il faut que je fasse ça, sinon ça va coincer.Voilà.Réponse en direct.Parfait.Donc, on peut vraiment l'utiliser sur les chiffres tranquillement.Alors là, on va rentrer dans quelque chosed'un petit peu plus touchy.
00:13:54 :C'est au niveau des...Au niveau de la PO.Alors, pour ça, je vais créer un second fichier.Fichier, hop.On va faire un fichier Python.
00:14:12 :On va faire un fichier Python.Je vais le remener.Alors, on l'a déjà dit plusieurs fois,Python, par défaut, n'a pas vraimentde système de variables privées.
00:14:43 :D'accord ?Ce n'est pas tout à fait vrai, parce que c'est...Il n'y a pas de variables privées dans l'escrit.Je vais vous montrer.Là, si je crée une variable...
00:14:57 :Hop.On va l'appeler bonjour.Donc là, voilà.Et que je l'affiche depuis mon sourd.Mon module.Voilà. Je lance ce script là.Pas de soucis, ma variable est affichée.
00:15:21 :Bien, d'accord.Maintenant, si j'importemon module...Alors, le nom que j'ai pris, je ne sais pas si ça va marcher.Je n'ai pas réussi à l'importer comme ça.
00:15:37 :Je vais faire un petit bricolage pour que ça marche mieux.Tac. Un petit instant.On va faire...Voilà.Je vais passer ça.Merci.Voilà.On va créer...
00:16:06 :Un petit fichier.Tac. Un petit instant.Le fichier.Le fichier bouton.Le fichier sourd.Là.On va le mettre ici.Ok.Le fichier, normalement...On le met ici.
00:16:45 :Voilà.Le fichier sourd.Voilà.Voilà.On va le mettre ici.Voilà.On va passer ça ici.On va le mettre ici.Voilà.Voilà.Voilà.Voilà.
00:18:10 :Voilà.Voilà.Voilà.Voilà.Stéphane, il n'y a plus de son, je crois. On ne t'entend plus.Je te vois parler, mais il n'y a pas de son.
00:18:46 :C'est pareil pour moi.Pas de son non plus.Merci.Ah, vous m'entendez, là ?Oui, c'est bon.J'ai écrit sur le clavier, j'ai dit ça avec une mauvaise combinaison de touches.
00:19:54 :Donc je disais, du coup, je ne sais pas si vous m'avez entendu,là, si j'importe mon fichier, toutes les variables qui sont dans mon fichier,alors dans le modus, il doit marcher aussi comme ça, je vais le tenter.
00:20:06 :Point.On va le faire comme ça.Nul.Ça ne marche pas.Porte.Étoile.Print.Variable.Même erreur, vous voyez ?Donc je ne pourrais pas récupérer des variables qui ont un underscore devant,parce qu'elles seraient considérées privées pour le fichier.
00:20:38 :D'accord ?Donc on peut réussir à rendre des variables privées.Alors maintenant, en Python, l'usage est très peu,on y recouvre très très peu aux variables privées.
00:20:58 :Ce n'est pas vraiment la pièce de tout Python,mais vous savez que si vous voulez vraiment rendre une variable inaccessibleen dehors du modus que vous proposez, vous pouvez quand même le faire.
00:21:08 :Elle sera accessible en dehors du modus, mais dans le modus, elle sera toujours accessible.D'accord ?Alors, autre petit usage de l'underscore, qui peut être sympa.
00:21:23 :Tiens, par exemple, ça va servir à Caroline qui est, je crois,toujours sur un projet de jeu de rôle.Oui.Et dans les jeux de rôles, qu'est-ce qu'on retrouve très souvent ?
00:21:41 :Qu'est-ce qui définit le personnage, Caroline ?La vie.La vie, son nom, son…C'est statistique, c'est…Je ne sais pas ce que tu veux dire.
00:21:57 :Sa classe, par exemple.Sa classe.Mais si, par exemple, je veux dire que la classe, c'est magicien,là, j'aurai un petit problème parce que j'utilise un mot qui est Python.
00:22:17 :Oui, d'accord.Maintenant, je vais rester sur mon côté anglophone.Je vais avoir des noms.Alors, je pourrais l'écrire en français ou je pourrais faire la classe…Alors, je vais rester en anglais.
00:22:37 :Classe of character.Voilà.Pour essayer de biaiser ça.Simplement, avec un underscore à la fin, on fait exactement la même chose.Comme ça, inutile de s'embêter à trouver un nom si on a besoin d'utiliser un mot qui est normalement un mot-clé de Python.
00:23:01 :Pour pouvoir l'utiliser quand même, on rajoute un underscore à la finet ça suffit pour que Python ne le confonde pas avec un mot-clé.Donc, voilà.
00:23:19 :Les deux derniers usages que je vais vous présenter sont assez avancés,mais vous aurez l'occasion de les voir plus tard.Le premier, on va rester sur une classe.
00:23:35 :Ma classe.Voilà.Vous irez voir un petit peu, il y a le même mangling.C'est un comportement assez particulier des variables.Je ne vais pas rentrer dans les détails ce soir, mais il y a eu des mentorats de faits sur le sujet.
00:23:58 :Le but, c'est de simuler encore une fois de plus le côté attribut privé.Pour indiquer à Python qu'il y a une simulation d'attribut privé,on va utiliser le double underscore devant le nom de la variable.
00:24:18 :C'est-à-dire que là, par exemple, dans la classe, on a un attribut privé.Je vais faire ça comme ça.Objet 1.Égal ma classe à l'objet 1.
00:24:39 :Très bien. Ce n'est pas le double du tout.Alors, si je fais ça.Objet 1.Objet 2.Hop. Si je lance ça.Voilà. On a une petite erreur.
00:25:06 :Parce que lui, il ne sait pas reconnaître ça.Parce qu'en fait, là, on a déclaré l'attribut comme étant privé.D'accord ?Maintenant, si je veux réellement l'écrire,je vais ajouter l'underscore, ma classe,dans le même...
00:25:26 :Ouais, dans l'underscore 1.Voilà. Et là, si je fais ça.Qu'est-ce que j'ai fait de première ?Objet 1.La classe.Clac, clac, clac.Ah, parce que je ne peux pas le priver de tête.
00:25:48 :Hum, hum, hum, hum, hum.Oui, oui, 1.Qu'est-ce qui ne va pas dans ma classe ?Hum, hum, hum, hum.J'ai mon 1, j'ai mon 2.
00:26:16 :J'ai mon objet 1.J'ai mon objet 1.Bon, attendez.Alors là, j'ai oublié de chercher.Je ne vois pas ce que j'ai pu faire comme erreurqui fait qu'il refuse.
00:26:34 :Alors, c'est ça.Ah, ouais.Si tu fais une modificationet que tu n'enregistres pas,forcément...Ça, c'est le défaut des tailles de charme.Alors, non, toujours pas.
00:26:55 :Allez.Ça a mieux marché.Voilà.Parce que je n'avais pas quitté le terminal tout à l'heure.Donc, je vous remonte,parce que l'erreur était la même tout à l'heure.
00:27:14 :Si je fais juste avec nom,boum,j'ai une attraitée erreur.Il me dit que ma classe n'a pas d'attribut nom.D'accord.Par contre,si je faisclasse, hop,là, ce coup-ci, il me le prend.
00:27:36 :Donc, en fait, ça, c'est ce qu'on appelle le NameManguin.C'est ce qui permet de rendre des attributs réellement privés.Là, du coup, on ne peut pas les appeler directement.
00:27:42 :Ou, pour les appeler,il faut utiliser l'objet, le nom de la classe de l'objetet le nom de l'attribut créé.Je ne vais pas trop rentrer dans le conceptdu NameManguin ce soir,mais comme vous pouvez le voir,ce double underscore peut permettrede vraiment empêcher l'accès à ces données.
00:27:58 :Il faut vraimentle décider très spécifiquement.Et maintenant, quel est le dernier cas d'utilisation des underscoresque vous connaissez, forcément ?Est-ce quequelqu'un a utilisédans les nomsde variables ?
00:28:20 :Non.Non.Je vais vous aider,vous avez un exemple sous les yeux.Avec lesattributs name,par exemple, init, c'est tout ça.Voilà.Qu'est-ce qu'on appelle ?
00:28:40 :On appelle, entre guillemets,les méthodes magiques.Donc, le init,il fallait taper un peu la suite comme ça,le rep,ce qu'on va retrouver des foisà la fin de certains scripts,if name égale main,ça c'est ces underscores-là,donc ces deux underscores au débutet deux underscores à la fin,
00:29:08 :expliquer à Python qu'on estsur ce qu'on appelle,vulgairement, des méthodes magiques.C'est-à-dire que là, typiquement,init, il sait que ce n'est pas une fonctionqui s'appelle init en soi, parce que je pourraistrès bien recréer derrière.
00:29:22 :Ça créerait une confusion autre, maisje peux créer une fonctiondef initselfsecourset hop,return self pour un nom, par exemple.En termes de programmation,je vais l'enregistrer, hop,là, je vais supprimer mon repici qui pose problème,voilà, et mon if name,voilà,et là, si je lance mon script,
00:29:50 :le bouton, ça lui poseaucun souci,d'accord ?Alors là, j'ai mis self pour un nom, c'est pas top,on va supprimer,on va aller à privépour que vous voyez ça,voilà,là,je vais mettre printobjet nom, et après, je vais faireun petit printhop, de
00:30:16 :objet init, voilà,vous allez voir qu'on va bien obtenir deux foisnotre nomsans problème, d'accord ?Donc le fait qu'il y ait une fonction qui s'appelle init iciet une autre avec les deux underscore,ça pose aucun problème.
00:30:30 :La seule chose, c'est que ça nous permetde savoir que c'est des fonctions spéciales,des méthodes spéciales.Alors typiquement,le init, c'est celle qu'on va utiliserle plus souvent, c'estla méthode,Python sait que quand il va créer un objet,il va devoirautomatiquement déclencher cette méthode-là,parce que dans son code,
00:30:52 :c'est inscrit qu'il y a une fonction, forcément,dans la classe, il y a une fonction qui s'appelle init,et c'est ça qui permet decréer l'objet au départ.
00:31:00 :Alors,la str,c'est queça va lui permettre d'imprimerl'objet. Donc là, si par exemple, je faisjuste un print, on va supprimertout çade l'objet 1,alors, que je lance,boum, vous voyez qu'il m'affichebienla phrase que j'ai mise en str,parce que Python sait que lorsqu'on demande
00:31:26 :d'utiliserla fonction printsur un objet,il va y regarder dans la classe, s'il y a une méthodede type str,ce qu'on appelle les méthodes magiques,et bien, il va devoir exécutercette méthode-là.
00:31:42 :C'est vraiment des méthodes spécifiques,qui vont être utilisées dans plus ou moins toutes les classes,et du coup,Python sait les repérer, parce qu'il sait quechacune de ces méthodes commence par deuxomnes d'un sort et termine par deux omnes d'un sort.
00:31:56 :Oui, maisje vois ton message,c'est une méthode spéciale,en bon Python.C'est vrai que tout le monde les appelle un peules méthodes magiques.
00:32:08 :Par exemple,le fameux if nameégal name, il va regardersi lenom du fichier,qui s'exécute,c'est bienle même nom du fichier,il va traduire vulgairement,si je suis bien dans le fichierqui est défini,c'est bien ce fichier-là qui se lance,il n'a pas été appelé autrement,
00:32:36 :tu exécutes les commandes que je te mets en-dessous.Donc,il y a beaucoup dechoses qui sontprédéfinies comme ça.Par exemple,on va faire ça comme ça.
00:32:50 :Hop là.Clac.Comme ça, vous le verrez.Je vais faire un Python 3.Alors, le fichier s'appellementora.Alors,Python 3-ile nom c'estmentora.
00:33:10 :Je me souviens bien.C'est pas souvent ça.Ah non, d'accord.Je ne suis pas dans le bon répertoire.Clac.C'est pas grave.Là, on est bon.
00:33:32 :Alors, Python3-imentora.Ok.Là, si je fais unhelp surma classe.Clac.Alors,c'est pas le help que j'aurais dû faire.C'est ledireclac.
00:34:10 :Voilà.C'est un dire.Hop. Là, vous voyez,on retrouve bien toutes cesfameuses fonctionsméthodes magiques.Donc, le class, le getAttribute,le dictionnaire, le dire.
00:34:30 :L'équivalent, c'est ce qui permet de voir si un objetest égal à l'autre.Le getAttribute, on va retrouveroù est-ce qu'il est.Là, vous voyez,j'ai une fonction iciunit qui correspond à la deuxième que j'ai créée.
00:34:44 :Et, normalement,on va la retrouver ici. Voilà.Vous voyez,il considère bien que c'est des fonctions différentes.On a module, là on a la représentation,là on a le str.
00:34:56 :Là, à chaque fois que vous allez faireun dire sur un objetou un module,vous saurez que les underscore, c'est ce quicorrespond auxméthodes spécialesou méthodes magiques.
00:35:10 :Et, vous allez retrouver parfois,alors là, on n'en a pas forcément,des variablesprivées,avec un double underscoreau début, ou un simple underscorepour ceux qui ont utilisé ça.
00:35:24 :Et ça va vous indiquerqu'elles sont privées. En règle générale,quand vous faites un diresur un module ou sur une classe,les modules,les méthodes que vous pourrez utiliser,généralement, c'est celles qui sont làà la fin, comme le unit,où il n'y a aucun underscore devant.
00:35:42 :Les autres, c'est déconseilléde les utiliser parce que,à un moment ou à un autre,ça peut poser une difficulté,et puis vous ne savez pas, à part que vous l'avez redessiné par vous-mêmecomme le cas du str.seo,
00:35:54 :ça risque de créer un problèmedans votre utilisation.Voilà, voilà.C'est, comme diraitForrest Gump, c'est tout ce que j'avaisà dire à ce sujet.
00:36:10 :Est-ce quevous connaissez un petit peu tout çasur les underscores ?Non, pas tout.Pas tout.Bon, alors, je vous conseilled'avoir certains, parce que ce que je vous ai montré, c'est un petit peugadget,mais de temps en temps, ça peutaider. Mais
00:36:34 :c'est bien de savoir qu'un underscore,il peut avoir différentes fonctions,cinq pitons, et quedu coup, voilà, notamment, je pense queparmi tous ceux que je vous ai montré, les deux plusimportants, c'est l'endemanding,etça, vous verrez ça plus tard, l'endemanding,si vous n'êtes pas trop à l'ensemble, ne l'attaquez pas
00:36:54 :dessus, parce que c'estun peu compliqué à comprendre.Mais surtout,par exemple, celui que je pense que vous allez très viteutiliser et qui va vous rendre beaucoup deservices,c'est celui pour la boucle.
00:37:08 :Et là, je pense qu'il devraitêtre utile très rapidement.Est-ce que vous avez d'autres questions ?Même sur autre chose que je souhaitais discuterce soir, n'hésitez pas.
00:37:26 :Oui, vas-y.C'est une question qui a à voiravec le underscore, maisje ne sais pas,c'est utilisé dans un langage qui ressembleà Python, mais qui n'est pasPython.
00:37:48 :Par exemple, quand on a unefonction,avec plusieursparamètres,dans cette fonction-là,on l'appelle ailleurs,mais on n'utilise pas un paramètre.Dans le langageutilisé, je mets ununderscore devant ce paramètre pouréviterdes warnings.
00:38:16 :La mécanique existe,mais pas avec des underscores.On parle bien de paramètresqui ne sont pas forcément aptes à chaqueutilisation de la fonction.On est bien d'accord.
00:38:34 :Je m'en écrans.Voilà.Admettons...Zeph employé.Voilà.Voilà.Mon prénom, je ne sais pas si ça me fait bien.On va essayer comme ça.Peu importe, ce n'est pas le problème.
00:39:00 :Euh...Admettons...On ne peut pas rentrer l'âgede tous les employés.Pour diverses raisons.On estime que les informations sont optionnelles.Ce qu'on va faire en Python,c'est que dans la fonction,on va donnerune valeur par défaut.
00:39:20 :Par exemple, âge, on va mettrepub.On peut aussi mettrepostinconnu.Voilà.Et en fait, à chaque fois qu'on va utiliserla fonction,là, si je fais employé.
00:39:38 :Ok.Alors, si je rentretel que je me propose là,ça va marcher, il n'y a pas de soucis.Par contre, si je veux faireun employé2et que je veux rentrerpar exemple...
00:39:54 :Euh...Seulement l'âge, ça marche.C'est bien qu'il y ait des exemples directement.J'ai embauché une équipe,elle s'est dépourvue à ma place.Et là, typiquement,alors,le problème, c'est que Python, il aun schéma positionnel des arguments.
00:40:12 :D'accord ?C'est-à-dire que là, tel qu'on a défini notre fonction,en premier, je suis toujours obligé de mettre le nom.D'accord ? En deuxième, le prénom.
00:40:20 :Si je ne veux pasrentrer le poste mais que je veux rentrer l'âge,je mets l'âge directement. Par contre,si je ne veux pas rentrer l'âge mais que je veux rentrer le poste,là, il va falloir que je préciseque je remplis la valeur poste.
00:40:32 :D'accord ?Toutes les variables qui sont optionnelles,donc, c'est ce qu'on appelle les argumentsnon positionnels,tels que âge et poste, puisque là, dans ce cas-là,sont tous les deux des arguments non positionnels,sont forcément placésà la fin de la listedes argumentsde la fonction.
00:40:52 :D'accord ? Donc là, je ne pourrais pas,par exemple, faire...Je vais faire ça, de toute façon, ça va faire10 bits. Normalement...Voilà. Là, j'ai une erreur.
00:41:12 :Parce que là, j'ai mis un argument non positionneldevant un argument positionnel.Ok ?Et si, alors...Je mets ça.Et si, par exemple,je veux faire ça,les employés 4égale employéset je vais mettre âgeégale à les 40,et que je veux mettrederrièrele fèvre
00:41:52 :Ok ?Là, vous voyez qu'il met une erreur.Parce que, du coup, j'ai mis mes argumentspositionnels.Après, on pourrait se dire que ça ne pose pas de problème,puisque j'ai défini âge à 40,donc il sait que le premier, ça correspond à l'âge,et que c'est 40, et logiquement,
00:42:12 :il prend son ordre de positionnel.Alors, sion veut mettre un peu dans tous les sens,ce qui n'a pas un grand intérêt en soi,puisque généralement, quand on construit sa fonction,on va la définir justementpour que l'usage en soit logique,mais je peux quand même, par exemple,
00:42:28 :en précisant que ça, c'est le nom,là, c'est le prénom,et malgré que manager ait la bonne position,parce que sion regarde bien ici, c'est bien le poste, c'est bien la position,je suis obligéaussi de préciser que le poste,la valeur que je mets là, c'est le poste,
00:42:46 :et là, pour le compte, si je lance mon script,qu'est-ce qu'il m'a fait ?Tu n'as pas fermé l'interprète,elle est ouverte.Voilà, merci.J'oublie toujours de le fermer.
00:43:10 :Voilà.Donc là, pour le compte, il n'y a pas d'erreur.D'accord ?Est-ce que ça répond un peu à ta question,Baptiste ?Oui, oui.
00:43:22 :Du coup, ça,je le savais, mais...Mais c'est ce qui rapproche du comportement que tu définissaisavec l'underscore, si je ne me trompe pas.Oui, je pense, parce quedans ce que moi j'utilise, par exemple,tu as une fonction dans un objetqui...
00:43:42 :Je ne sais même pas comment l'expliquer, en fait.C'est une fonctionqui donne le temps.Le temps est coulé.Et tu as des instructions dans cette fonction-là.
00:43:54 :Par exemple, des mouvements de personnagesqui sont calculés avec le tempsest coulé pourque ce soit bien synchroavec ce qui est fait.En fait, tu peux utiliser cette fonction-làailleurs.
00:44:10 :Mais tu es obligé de passer quand mêmele delta time,le temps passé,dedans.Et du coup, il n'est quand même pas utilisé,mais...Je ne sais pas comment l'expliquer.
00:44:26 :En fait,tu as des arguments...Pour traduire un petit peu en langage python,tu as des arguments positionnels,et que tu ne vas pas utiliserdans un autre cadre d'usagede certaines fonctions.
00:44:42 :Et là, typiquement, le delta time.Là, il n'y a pas de mécanisme particulier.Le seul truc, c'est ques'ils ont été définis comme des arguments positionnelsdans la fonction,tu vas être obligé de les définir.
00:44:56 :Après, tu mets une valeur bidon,ce n'est pas un problème.Si ta fonctionne va pas spécifiquementbloquer à cause de ça, tu peux mettre une valeur bidon.
00:45:06 :Ou sinon, tu mets la bonne valeur.Si tu utilises une fonctionavec des argumentspositionnels, c'est obligatoireque tu es obligé de les renseigner.Tu n'as pas de solution.
00:45:20 :Tu pourrais éventuellement mettre un underscore.On peut essayer d'essayer de voir ce que ça donne.Mais à mon avis,ça va coincer.Parce qu'en fait,le problème, c'est que là, l'underscore,je fais l'essai.
00:45:34 :Je me suis jamais posé ce genre de question.On va y donner un âge.Mais on va le mettre en poste.Là, tu vois, ça me pose une erreur.
00:45:46 :Et à mon avis, je pense que quand je vais renseigner,je vais avoir une belle erreur.Voilà.Parce qu'en fait, là, le truc,c'est que dans ce cas-là,si tu veux, ton underscore,l'underscore est utilisé pour faire référenceà quelque chose.
00:46:02 :Pour signaler un état.Donc là, techniquement,l'utilisage d'un underscore dans ce genre de cas,en fait, il ne sait pasà quelle référence il fait ou quel étatil est en train de signaler.
00:46:18 :Tu ne peux pas mettre, par exemple, là,à la place de nom, tu ne peux pas mettre un underscorepour que ton employé, il ait juste un prénom,un âge et un poste.
00:46:26 :Tu es obligé d'avoir un argument positionnel.Voilà.Pour simuler ça, le plus simple,c'est de faire comme je l'ai défini en haut,mettant des valeurs par défautdans la définition de ta fonction.
Aucune occurrence trouvée pour « ».