Session du 23 novembre 2024 à 14h00
Bases du Langage
TOSA & Certifications
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
Comprendre la portée des variables en Python
Dans cette session nous verrons quelques notions :
-
Closure
-
Passage par référence
-
Portée des variables
-
Façon peu commune de créer une classe
00:00:00 :Bon, alors, on a commencé depuis à discuter, mais bon, voilà, on va rester enregistrement maintenant.Si vous m'entendez bien, c'est nickel.Je n'ai pas mis de casque, mais apparemment le micro marche bien.
00:00:15 :Bon, je pense que le programme était un petit peu trop ambitieux, là.Je me suis lancé un peu sur... On ne va pas trop bâcler les choses.
00:00:23 :On va prendre un sujet.Si il y a des questions, interpellez-moi à l'oral.Vous me coupez dans la parole, ça ne dérange pas, je m'en fiche.
00:00:34 :Parce que je n'ai pas forcément le Google Meet sous les yeux quand je fais ça.Donc, voilà.Petite question, est-ce que vous êtes super à l'aise avec tout ce qui est portée des variables en global, en local ou pas ?
00:00:51 :Pas du tout.Je ne dirais pas que je suis super à l'aise. Je vois ce que c'est.En général, ça va. Après, je suis ouvert à tout exercice.
00:01:13 :Peut-être que je pense que ça va, mais que ça ne va pas, en fait.C'est un sujet où on s'y perd facilement.Alors, pour info, Jean-Christophe m'a fait des exercices de malade.
00:01:30 :Donc, je pense que Jean-Christophe, toi, tu vas être un pro du log.Je ne sais pas. Je dois m'améliorer encore.M'améliorer, c'est encore un peu...
00:01:44 :OK. Bon, allez.Donc, je vais lancer mon petit VS Code.Normalement, vous me dites si vous avez... Là, j'écris ça, par exemple, une fonction.Vous voyez bien, Oda, par exemple, tous ces moyens ?
00:02:01 :Oui, c'est bien.OK, super.Alors, le sujet très important avec Python, c'est la portée des variables.Donc, ça va être une zone du code où la variable va être accessible.
00:02:16 :Et ça, au Toza, ils vont pouvoir vous poser des petites questions,vous faire tourner la tête, des fois. C'est possible.Et ça, il faut être clair là-dessus.
00:02:27 :Du coup, on va commencer très simple.Imaginez, j'ai une fonction.Je vais printer X.OK.Et j'ai une variable, 5.Et si j'appelle ma fonction,qu'est-ce qu'il se passe, du coup, pour vous ?
00:02:52 :Bêtement, dites-le à l'oral, il n'y a pas de problème.Allô, allô, je ne sais pas si on m'entend.Oui.Ah, génial.Ça print 5, I guess.
00:03:07 :En fait, X est dans l'espace global,et du coup, la fonction va chercher dans l'espace global, c'est ça ?Oui, OK, pas de problème.Là, j'ai mis un truc bidon, il n'y a aucun souci.
00:03:19 :La fonction va sur l'espace global, ici.Donc, ça, en Python, ça marche très bien.Ensuite, on va faire un truc sympathique.On va partir sur notre exemple.
00:03:38 :On va printer X.On va aller mettre un petit X égal à 1.Ah.Le petit bout.Je ne sais pas s'il a rejoint pour l'instant.
00:03:58 :Est-ce que ça charge ?Yes.Salut Thibault.Je ne sais pas s'il t'entend.Je ne sais pas s'il t'entend.Est-ce que t'as bien rejoint l'association ?
00:04:17 :Bon, Thibault a mis le micro coupé.Je vais continuer pour l'instant.Du coup, je disais...Là, on va faire toute l'espèce qui peut vous sortir.
00:04:29 :Là, on a une fonction.Je vais définir ma fonction X.Je vais la printer.Ici, je vais avoir la variable X qui va être dans mon espace global.
00:04:41 :Ici, on est d'accord qu'on est dans l'espace local.Là, dans l'espace global.J'appelle ma fonction.Je vais faire un print de X.Ici, un print.
00:04:53 :Je vais le printer aussi.Est-ce que là, vous savez ce que ça va me ressortir ou pas dans le terminal ?Ça fait 1 et 2 après.
00:05:07 :Ça dit quoi ?Ça affiche 1 en premier.Parce que c'est l'X de l'espace global.Et après, ça affiche 2 du fait du X égale 2 dans l'espace local.
00:05:25 :À la fonction F1.Et après, il y a de nouveau un print X.Donc, on réaffiche 1.Ok.Tout le monde est d'accord avec ça ?
00:05:34 :Vous dites un si ?Oui.Ok.Donc, voilà.Ok.Pas de surprise.1, 2, 1.C'est bien ça.Maintenant, on va modifier un peu les choses.
00:05:49 :Si je garde, par exemple, je vais garder ma variable qui va être égale à 1 ici.On va toujours utiliser la fonction F1.Et on va enlever ça.
00:06:04 :Et on va faire ça.Peu importe le chiffre.Je vais bien faire mes scans.Et là, ça, c'est pareil.S'il y a des petits cas comme ça, il faut avoir.
00:06:16 :Et là, est-ce que vous pouvez me dire ce qu'on va avoir comme résultat ?Moi, je dirais qu'il y aura une erreur.Qui a dit ça ?
00:06:26 :Anthony.Anthony.Ok.Vous êtes tous d'accord avec ça ?Vous êtes sûr ou pas ?Non.Moi, je ne suis pas sûr de ce qui se passerait.
00:06:37 :Moi non plus.Il affiche 1, en fait.Tu as dit qu'il affiche 1.Ok.Pourquoi pas ?On va voir.Attends.Je vais chercher mon verre d'eau.
00:07:00 :Donc, c'est là qu'on commence à avoir des cas intéressants.C'est qu'en fait, pour Python, ici, on va avoir une erreur.En fait, pour Python, ici, il y a une assignation locale à x dans la fonction.
00:07:16 :Donc, il va considérer x comme une variable locale.Et le problème, c'est qu'on va faire un print avant de donner la valeur.Donc, c'est pour ça que pour lui, ce n'est pas possible de printer xpuisque x est défini après le print.
00:07:32 :Et lui, il va chercher dans l'espace local.Pardon.Juste une question.En fait, le x, si je l'avais mis avant la fonction, est-ce que ça marchait ?
00:07:42 :Oui.Parce que si tu mets ton x avant la fonction…Je vais couper la couleur ancienne.Parce qu'ici, en fait, ton x est référencé, là.
00:07:53 :Tu vois ?Ici, il ne fait pas bien 5.Non, non.Mais je veux dire, avant même ton def, tu le mets, tu mets x égale 5.
00:08:02 :Et après, tu fais ton def.Est-ce que ça marchait, ça ?Ah !Ça changerait, regarde.Et le geste 1x, est-ce que tu veux que le geste 1x soit en bas comme il était à la base ou pas ?
00:08:17 :Oui, oui.Oui, par exemple.Il y a un truc comme ça, toi ?Oui, c'est ça, oui.Voilà.Je l'aurais fait comme ça, en tout cas.
00:08:27 :OK.Non, mais en fait, c'est pareil.En fait, là, c'est juste que pour Python, en fait, il va aller chercher, lui…Il se dit, tiens, j'ai une variable x dans l'espace local.
00:08:37 :Mais le problème, c'est qu'elle n'est pas encore définie.Donc, lui, il va essayer de printer x, mais il se dit, mince, elle n'est pas encore définie.
00:08:43 :Donc là, en fait, tu as le unbound local error qui ressort, en fait.Voilà.Tu me coupes, si je dis des bêtises, Gabriel.Moi, de ce que j'avais vu, je considère qu'en fait, le print, c'est le return.
00:09:00 :Et tout ce qui se passe après return, c'est des papiers en compte.Et du coup, ça cause une erreur.Non, print, ce n'est pas un return.
00:09:08 :En fait, là, je ne retourne rien.Par contre, imagine…Alors, attends.Tu vois, là, en fait, mon VSCode, il me le marque bien, en fait.
00:09:18 :Je ne sais pas si vous voyez, il me le met un peu en assombris.Là, ce qui se passe après le return, en fait, ça ne sert à rien, ce que j'ai écrit.
00:09:24 :OK ?Voilà.J'ai même l'unbound local error qui apparaît ici.Mais parce que lui, il ne fera rien, en fait, après le return,mais il considère qu'il va aller chercher une variable localequi n'a pas encore été assignée avant, en fait.
00:09:47 :Mais le print, ce n'est pas un return.En fait, là, ma fonction, si je fais même un print de ma fonction,je vais enlever ça.
00:10:01 :Voilà.On voit bien que ma fonction a un return non.Elle ne retourne rien, en fait.Ce n'est même pas un return non, c'est qu'elle ne retourne rien.
00:10:08 :C'est OK ?OK.Vous me dites, hein.OK.Est-ce que maintenant, vous connaissez le mot-clé global ?Ou pas ?Je cherche peut-être...Je serai dans votre chat au cas où, s'il n'y a pas des messages.
00:10:26 :Ah, Thibaut, je fais un coucou.Je ne t'avais pas vu.Est-ce que vous connaissez le mot-clé global ou pas ?Alors, je ne l'utilise jamais, en fait.
00:10:38 :Il sert à spécifier, d'aller chercher dans l'espace global, c'est ça ?Ouais.Je n'ai pas vu qui l'a dit, je ne l'utilise jamais, mais tu as bien raison.
00:10:47 :Jean-Christophe.OK.Ce n'est pas...Bon, déjà, je n'ai jamais vu, moi, dans un...Pour la boîte avec laquelle je bosse actuellement ou autre chose,je n'ai jamais vu utilisé dans le cadre pro, peut-être.
00:11:02 :Je ne sais pas si Thibaut l'entend.D'ailleurs, s'il est encore là.S'il l'a déjà vu dans le monde pro, lui.Mais en général, le mot-clé global, on ne le voit pas écrit,c'est une mauvaise pratique, parce qu'en fait,vous allez aller chercher dans votre espace local,modifier les variables en global.
00:11:26 :Ce n'est pas top, quoi.Je n'ai jamais vu dans un cas normal.Donc, ça confirme bien.Donc, on va prendre l'exemple.Je vais printer X.
00:11:37 :Là, imaginez, je vais...Mon mot-clé global,je lui dis d'aller chercher X dans l'espace global.Je vais printer mon X.Et là, comme tout à l'heure,tout à l'heure, le cas qu'on avait, c'était ça.
00:11:54 :Et j'avais dit quoi, déjà ? Je ne sais plus.J'ai fait un X égale, je ne sais plus, 1.On avait fait un F1.J'ai bien mon print.
00:12:03 :Voilà.Tout à l'heure, on avait fait ça.On avait notre erreur.Maintenant,si je lui dis d'aller chercher dans l'espace global,je vais relancer.Il va bien aller me chercher ma variable Xqui est égale à 1 dans l'espace global.
00:12:23 :Tout le monde est OK avec ça pour l'instant ?Vous me dites.Oui, c'est bon.On va faire un truc.Et maintenant,si je fais un print de X après ma fonction,qu'est-ce qui se passe pour vous ?
00:12:42 :Pour moi, ce serait 1.OK.Oui, pour moi aussi, 1.Ici, ça afficherait du coup1 parce qu'on a le print iciet là, on aura encore 1 du coup.
00:12:58 :Oui.OK.Eh bien non, on a 5.C'est là où le mot clé globale peut devenir dangereux.Ah oui, effectivement.Ici, j'ai réanimé.Je sais.
00:13:11 :C'est pour ça que cette session s'y tenait fortement.Ça fait un moment qu'il faut que je la passe.Parce qu'en fait,et ça en plus, c'est l'heure de questionsqu'ils vont être contents de vous poser.
00:13:22 :Ici, je réassigne la valeur 5 à la variable X.Sauf qu'ici, j'ai bien spécifié dans ma fonction,donc j'ai bien spécifié dans mon espace local,d'utiliser ma variable X qui est dans l'espace global.
00:13:35 :Et vu que je la redéfinis ici,après avoir appelé la fonction,elle a une nouvelle valeur.Et donc forcément,première fois, je print bien 1parce que X est égal à 1.
00:13:45 :Une fois que j'ai réassigné,si je print après la fonction, je suis bien à 5.Voilà.Ça vous a plu, ça ?Oui, excellent.Voilà.
00:13:55 :OK, d'accord.Sympa.Oui.Retenez bien ce genre de petites chosesImaginez les genres de programmesoù on a un bug,où on a un truc inattendu.
00:14:10 :Je ne comprends pas pourquoi ma variable me retourne ça.Si vous avez un global,ça peut vite vous perdre des effets.Je ne sais pas si on peut dire un effet de bord.
00:14:21 :Vous allez toucher votre espace global dans votre fonction.Ce n'est pas forcément super génial, on va dire.Donc voilà.On va peut-être pouvoir continuer à s'amuser autrement.
00:14:31 :Est-ce que j'ai des exemples ?OK.OK, OK.On va faire ça autrement.Je vais faire mon...On va rester basique.Donc là, on est bien dans l'espace...
00:14:45 :Ici, on va être dans notre espace local.On va printer notre variable.Donc là,je vais appeler la fonction maintenant.Hop.Bon, là, basique.J'ai bien mon 5 qui s'affiche.
00:14:59 :On est tous d'accord.Sauf qu'il y a...Si je fais ça, par exemple,si je veux faire un print de...Voilà.Je vais chercher locales.
00:15:16 :Alors ici, vous voyez,avec ça, en fait,je peux récupérer...Je peux récupérer le contenu de mon espacesous forme d'un dictionnaire.Donc là, en fait,avec locales,ici, dans ma fonction,je peux récupérer sous forme de dictionnaireles variables dans mon espace local.
00:15:39 :Ça, c'est juste de la connaissance,je vous le dis,parce que c'est bon à savoir.Au-delà du faitque vous pouvez avoir des questions de Kyotoza,c'est toujours bon à savoirce que retourne cette fonction.
00:15:52 :Voilà.Donc on a un dictionnaireavec nos variables dans l'espace local.Et puis, bien sûr,vous pouvez faire un global aussi.Bon, là, c'est plus la même chose.
00:16:05 :Vous avez vraiment tout le dictionnairede l'espace global qui est affiché.Et si je ne dis pas de bêtises,on va faire un x égale 1.
00:16:19 :Est-ce que ça va s'afficher ?Je vais réinitialiser.Voilà.Ici, j'ai bien mon espace local,donc avec mon dictionnaire,avec mon x qui est égal à 5.
00:16:32 :Et là, j'ai bien tout mon espace global.Et à la fin,on voit que j'ai mon x qui va être égal à 1.Pour ça, c'est bon,il n'y a pas de problème ?
00:16:41 :C'est bon.Merci pour le tips,parce que je ne savais pas.C'est des choses...En fait, c'est pour ça que,comme je disais,cette session-là,je voulais vraiment la faire,parce que quand on voit le coup d'avantoù on va reprinter le xqui a été modifié après la fonction,
00:16:59 :ce genre de petites choses,ce ne sont pas des chosesqu'on utilise forcément.Je trouve que c'est bon à savoir.Notamment ce petit local,j'ai global.
00:17:09 :On est un peu perdu,au moins on peut afficherce qui est dans le dictionnaire.Et vous allez voir,on peut faire autre chosequi peut être sympa.
00:17:19 :On va pouvoir aller modifierles variables grâceà la fonction globales.Ici, on va laisser x égale 5,on va printer x.Et là, on va faire autre chose.
00:17:35 :On va faire un globales.Et du coup,x est retourné dans le dictionnaire.On va chercher le xde notre espace global.On va dire 100 par exemple.
00:18:01 :On va laisser x égale 1.On va faire un print de x.Hop.Là, je print x est égal à 5.Là, j'ai bien 1.
00:18:14 :Donc normalement,je dois avoir 1 et 5.C'est ça.Et donc,une chose assez marrante,c'est que si je reprinte x derrière,j'ai bien x égal à 100.
00:18:29 :Là, vous allez me dire,je parle dans les trucsun petit peu...Je ne sais pas qui fait ça,honnêtement,mais c'est bon à savoir.
00:18:37 :On peut aller modifier la variablede l'espace globalavec nos fonctions globales.Vous me dites si c'est...Oui, c'est bien.En fait, ça montre quela structure de fonctionnementde Python,c'est des éléments de Python.
00:18:55 :Je trouve ça génial.Sur une petite chose que j'aime bien,que j'ai bossé,en fait,c'est bien de savoir tout de suitequand on apprend Python,mais assez vite,de savoir un peu,bosser avec ce qui est local,global,pour ne pas être perdu, en fait.
00:19:15 :OK.Donc,merci.On continue,si c'est bon pour vous.Ah, Thibault,j'ai vu que c'était dans des mauvaises pratiques,soit en 288,éviter de casser des codes legacy.
00:19:28 :Bref, OK.Donc là, on est sur le mot clé global.Thibault a envoyé un petit commentairedans le chat,si vous voulez aller le voir.
00:19:35 :Euh,ensuite,alors,donc là,on va partir sur quelque chosed'un peu plus,qui peut être un peu,qui peut vous perdre aussi,mais ça, c'est pareil,question typique,typitosa.
00:19:53 :Alors,on va prendre un exemple.OK.On va avoirune liste en arguments,comme ça,basique,sauf qu'on va avoir,par défaut,une liste.Donc là,on peut très bien faire ça,vous dites,si vous me coupez,si vous n'êtes pas d'accord,pour créer une liste,OK,soit je fais ça,
00:20:16 :soit ça,c'est la même chose,on est d'accord ?Pas de problème ?Non,pas de problème.OK.Donc voilà,on va faire une liste comme ça,par exemple,OK.
00:20:29 :Donc là,j'ai créé une liste.Enfin,j'ai assigné en valeur par défaut,une liste.On va la printer.On va printer notre liste.Et puis,on va faire un,je ne sais pas,qu'est-ce qu'on va dire ?
00:20:46 :On va faire un append ?Bon,allez,vas-y,on va mettre sa luge,je n'ai pas trop d'idées.Et ce qui va se passer,on va faire,on va printer,on va utiliser,alors F1,OK,et on va la rappeler derrière.
00:21:02 :Et qu'est-ce que ça va vous afficherdans le terminal,ici ?Au début,une liste vide,et après,une liste avec sa luge.OK.Et pourtant,ici,on est sûr,à chaque fois,par défaut,on a bien une liste vide.
00:21:29 :Mais,il faut savoir qu'en fait,que l'objet par défaut,il va être créé au momentoù la fonction est créée.Donc en fait,dès qu'on va appeler la fonction,à chaque appel de la fonction,on va garder notre liste en mémoire,ici.
00:21:42 :Est-ce que ça,c'est bon pour tout le monde ou pas ?Ou vous ne saviez pas,ou vous n'êtes pas sûr ?Moi,je dirais comme,je crois que c'est Anthony,c'est vide d'abord,et après,ça affiche sa luge.
00:21:56 :Enfin,pour moi.Oui,c'est bien ça.Là,vous voyez,à chaque appel,on rajoute un salut dedans,en fait.Donc,il faut bien retenirqu'avec un objet comme ça,muable,quand vous passez comme ça,par défaut,un objet par défaut,au moment où la fonctionest créée,l'objet est créé,
00:22:23 :et donc,entre chaque appel,ça va être ouvert dans la mémoire.Ça ne va être créé qu'une fois,en fait.À chaque fois,dès qu'on va appeler F1,on ne va pas recréerune nouvelle liste.
00:22:32 :Ça sera toujours la mêmeque ce qui a été utilisé.OK ?Est-ce que ça,c'est bon pour vous,du coup ?Pratiquement,ça revient à direque la liste,dans ce cas-là,devient pratiquement globale,en fait.
00:22:44 :Moi,je pensais qu'elle seraitrecréée à chaque fois,et qu'en final,on n'aurait rien dedans.Et non.Et non, non, non.Elle n'est créée qu'une seule foisau moment où la fonctionest créée,et vraiment,à chaque appel,là,ma boucle,la fonction,plusieurs fois.
00:23:01 :Oui, d'accord.F1,eh bien,on voit bienqu'à chaque fois,la même est utilisée.Voilà.OK.Ensuite,on peut avoirdespetits cas intéressants.Qu'est-ce qu'on pourrait fairecomme cas ?
00:23:21 :Il est quelle heure ?Je ne vous prends pastout votre temps.C'est bon.Parce que j'aurais bien vouluqu'on parle des closuresAlors,je vais avoir ici,par exemple,on va avoir notreon vafaire une print de liste.
00:23:42 :On va appeler notre salut.OK.Maintenant,je vais faire ça.Donc là,j'ai bien ici une liste vide.En fait,j'aurais pu garderparce que je vais faire pareil.
00:23:54 :Si je fais ça,là,c'est juste pour vous montrer.Donc là,c'est pareil.Ici,j'ai ma listema liste vide ici.Et dès que j'appelle F1,que j'utilise dans ma fonction,ma liste,c'est toujours la mêmequi est utilisée.
00:24:17 :OK.En fait,on va modifierl'objet listequi existe.Tout simplement.Parce qu'on est sur un objetqui estmutable.Voilà.Muable,je ne sais pas comment vous dites.
00:24:30 :Muable.Donc,c'est la raison pour laquelleça ne marchait pasavec X égale 5ou X égale 1,je ne sais plus.C'est parce que lui n'est pasmuable.
00:24:39 :Ouais,regarde.C'est ça ?Ouais,regarde.Si je fais ça,on aurait pu laisser.On a fait quoi tout à l'heure ?Print Xet on avait fait un trucgenre Xest égale 5.
00:24:51 :Et c'est làoù on avait notrelocal error.C'est que là,on a un objetqui est immuable.Effectivement,ça ne fonctionne pasavec Python.
00:25:00 :D'accord.Donc,la différence fondamentale,c'est ça en fait.C'est entre les muableset les immuables.Ouais,c'est ça.D'accord.C'est pour ça qu'il y a maintenant.
00:25:10 :Je comprends mieux la relation.Tout à l'heure,j'étais un peu à l'ouestmais là,je comprends mieux.Ouais,j'y vais un peu progressivementet je n'aurais peut-êtrepu en parler avantdu immuable.
00:25:20 :C'est pour çaque j'en parle sur la fin.Mais là,du coup,il y a le signal global Xqui on voudrait modifier.Voilà.OK.
00:25:28 :Voilà.Donc,là,je ne sais passi ça s'active.Après,ça va revenir un peu.Si je fais ça,que j'ai une liste,voilà,ça va peut-être plusne pas vous perdre.
00:25:40 :Mais bon,là,hop,c'est bien.C'est bien.C'est bien.C'est bien.C'est bien.C'est bien.C'est bien.C'est bien.C'est bien.C'est bien.Bon,là,hop,salut.
00:25:57 :Là,il n'y a pas de surprise.Du coup,tout ce qu'on a vu avant,liste,liste,liste,où j'apprends à écrire.Qu'est-ce que j'ai fait ?
00:26:06 :Je l'ai fait derrière,non ?Ah oui.Hop,c'est bon.Ici,pas de problème.Qu'est-ce que j'ai fait ?Mon F1,il est là.Ici,j'utilise bien ma listeen argument.
00:26:19 :En fait,c'est pareil.Qu'est-ce que j'ai fait ?A peine.Super,les fautes.Hop,hop,hop.Voilà.Tac.J'ai mis 2S.Donc là,c'est pareil.
00:26:33 :C'est sur le même principe.Là,on a bien notre,une liste,un argument qui est muable.Donc forcément,on modifie le même objet.Voilà.Là,il n'y a pas de problème,pas de confusion.
00:26:44 :Qu'est-ce que je voulais vous dire ?On peut repartir sur un exemple.On va directement passer,je pense,au système de closure.Ouais.C'est là.
00:27:00 :Ici,tout va bien pour tout le monde.C'est bon,il n'y a pas de problème.Excuse-moi,Gab.Oui.Juste une question.Du coup,là-dessus,si je passe en paramètre,du coup,de la fonction liste égale liste.
00:27:18 :Alors attends,tu m'as dit,en exemple,si je passe ici,en paramètre par défaut.Ouais,liste égale,donc une liste.Ouais.Mais que dans l'espace global,j'ai aussi un truc qui s'appelle liste.
00:27:30 :Qu'est-ce qui se passe ?Alors,si j'ai une liste,qui s'appelle liste aussi.Ok,on va redonner des noms différents.Si j'ai une liste ici,je ne sais pas qui,qui va être par exemple,on va peut-être même,on va faire un truc,on va lui mettre quoi,je ne sais pas,
00:27:49 :au revoir.Et là,tu voulais faire quoi ?Qu'on fasse ici,par exemple,un liste point,on va la printer.On va faire un liste point append.
00:27:58 :Ouais.Bonjour.Bonjour.Et là,je vais faire un print de ma liste.Hop.Et si j'appelle F1,tac.Hop.Et donc là,alors attendez,je vais faire un truc,hop.
00:28:25 :Attends,je n'ai pas fait de faute.Hop, c'est bon.Non,tac.Non,je vais la garder ici.Tac, tac.Ok,donc là,j'ai bien,ici ma première,quand je rappelle mon F1,excusez-moi,j'ai bien mon bonjour,mais j'ai aussi,alors,attendez,si je rappelle F1,pour bien vous montrer,
00:28:55 :tac.Là,j'ai bien mon au revoir,et là,j'ai bien mon bonjour,quand je le rappelle,ok.Ouais,donc c'est ça que je voulais vérifier,que c'est bien deux choses différentes,même s'ils ont le même nom.
00:29:08 :En fait,il faut faire attentionà ce que,si on veut,append,par exemple,en global,il ne faut pas passerpar la fonction,là,par exemple.
00:29:19 :T'as dit quoi ?Si on veut passer dans,si on veut append la listequi est en global,faudrait ajuster ça comment ?Parce que là,il va passer forcémentpar la listeque lui,il créepar lui-mêmedans la fonction.
00:29:31 :Ouais.Du coup,si tu veux mettrele bonjourdans la listeen global,excusez-moi,c'est un peu tortueux,mais j'essaie vraimentde...Ouais,ouais,ouais.
00:29:44 :Il faut utiliserglobal,mais...Tu pourrais utiliserglobal,mais il ne faudrait pasavoir,il ne faudrait peut-êtrepas avoir par défaut,du coup,notre liste assignéeà une liste vide,je pense.
00:29:57 :Très bonne question.Alors là,tu me torturesle cerveau,là.Heu...Heu...Heu...Heu...Bonne question,attends.Il y a un autreproblème.Le problème,c'est que,donc,toi,tu voulais iciqu'on modifiecelle-là,c'est ça ?
00:30:19 :Ouais,avec ta fonction liste,que ça modifiela liste en global,du coup.Oui,donc,je pense qu'il n'y a pasd'autre moyen quede l'appeler en global.
00:30:29 :Pour avoir le résultat,au revoir,et puis le deuxièmeélément,ce serait bonjour.Ouais,tu verras,en fait,en plus,c'est...ça peut être...Tu pourras avoirune...
00:30:42 :Ouais,alors,est-ce qu'on ne pourraitpas utiliser un non ?Mais si on laisseabsolument notre listeici,mais qu'elles ontle même nom,heu...
00:30:52 :Ah !Attends,regarde,c'est...Là,tu me mets un doute,là,tu vois.J'avoue que pour moi,l'idée première,c'était bien de voirla distinctionqui se faitentre les deux.
00:31:06 :Donc,c'est...C'est...C'est...C'est une distinctionqui se fait entre les deux,qu'il y en a unqui appartient vraimentau globalet l'autrequi appartient vraimentà la fonction.
00:31:18 :Mais là,j'avoue que...Si...Si tu veux utiliserla globale,du coup,là,tu n'as pas vraimentde choix.Attends,attends,je suis bien dansmon revoir,là.
00:31:32 :OK,là,si je fais un print,je print ma listeici.Attends,si déjà,c'est...C'est des objets différents.Et lui,qu'est-ce qui lui plaît pasici,là,mon IDE ?
00:31:46 :OK,pourquoi pas,on va le laisser comme ça.Global,là,on va avoir notre listeen global.Ici,je l'ai bien en paramètreici,par défaut.
00:31:57 :On appelle bonjouret on va printernotre listequi est dans la fonction.On va se faire un...On va se faire un petitextrude,peut-être,même pas,on va pas faire comme ça,on va se faire...
00:32:08 :On va se faire un petit extrudedans la fonctionpour qu'on sacheoù on est.Hop.Là,on sait qu'on estdans la fonction.Hop.
00:32:17 :Si on laisse ça ici,qu'on fait...Alors là,on va dire qu'on estdans le global,du coup.Hop.Et ici,j'ai bien ma liste.
00:32:26 :Bon,est-ce que ça...OK.OK.OK.OK.OK.OK.OK.OK.OK.Voilà.Ici,j'ai bien...Ah, OK.Je ne l'avais jamais vu,cette erreur-là.
00:32:44 :Liste,liste paramètre en global.Donc,c'est bien en paramètreet en global.Et donc,ça passe pas.C'est intéressant.Je vais regarder,je vais regarder,je vais regarder plus prèsde ça.
00:32:56 :C'est intéressant.Merci pour le...la petite question.Ouais.OK.Je me le notepour y penser.Hop.Du coup,par contre,si tu avais le nomde la listequi était différente,il n'y aurait pas de souci,peut-être.
00:33:11 :Alors,donc,en fait...Oui,c'est parce que c'est le même nom,l'argument et le global liste.De toute façon,en Python,ouais,ça,après,en Python,tu ne peux pas avoirun même nompour un paramètre de fonctionet appeler en global.
00:33:27 :Bon,ça,on l'a bien vu.OK.Pour ça,il faudrait,par exemple,là où je l'appelle liste2,je n'en sais rien,liste2.Là,j'appelle en global ma liste.
00:33:39 :Là,je fais mon liste2.append.Et là,bon,forcément,j'ai fait quoi ?Ma liste ici,print global,print list.Bon,là,forcément,du coup,j'ai bien mes bons résultats.
00:33:53 :J'ai bonjour et au revoirparce qu'on n'est plus sur le même objet.Mais,tu vois qu'en fait,le piège,c'est qu'ici,vu qu'on utilisait...En fait,j'avais jamais penséà utiliser à chaque foisprint global iciavec le nombre variableque j'avais en argument ici.
00:34:06 :Tu vois,comme quoi.Bon,je pense que très mauvaise pratique,sinon,en soi,si jamais on amené à faire ça.Mais,ça ne passe pas.
00:34:15 :Et puis,on ne l'accepte pas.Pardon.Juste que je comprenne bien,là,quand tu as faitliste égale au au revoir,tu as rappelé ta fonction.
00:34:23 :On est d'accordque quand tu rappelles,ça ne la print pas,cette fonction.Ça,ça,c'est une listequi est dans mon espaceglobal.Global,ouais.
00:34:35 :Alors,du coup,par exemple,on va faire un truc qui...Et moi,j'aurais fait comme Anthony,en fait,pour ne pas me prendre la tête,j'aurais changé de variablepour que ça soit...
00:34:45 :Voilà,parce que là,je me mélangeraisavec le même nom.Ouais,de toute façon,là,on travaille biensur deux objets différents.On a celleoù on ala liste 2qui est ici.
00:34:58 :Bon,c'est une liste vide.Je vais bien appendmon au revoir.OK.Non,il est où ?Liste 2,par exemple,bonjour.Dans la fonction,j'ai mis bien un bonjour.
00:35:10 :Et ça,c'est bon.Ici,je print bien ma liste 2.OK,bonjour.OK.Et là,j'ai ma globale,ici,liste,où j'ai bien mon au revoir.
00:35:22 :Et je fais bien un appendde au revoir ici.Donc,c'est pour ça que j'ai deux foisau revoir.Mais sinon,oui,on peut avoir ici du coupplutôtle mêmeappelé en globale listeet l'avoiren plus en paramètre.
00:35:35 :OK ?Oui.Voilà.Oui,oui,il a compris,là.Bon,c'est intéressant.Je ne m'étais pas poséla question jusqu'ici.Je ne l'ai jamais vu.
00:35:47 :C'était marrant.Maintenant,pour finir,est-ce que vous avez encoreun peu le tempsou on arrête là ?Pour finir,est-ce que vous avez encoreun peu le tempsou on arrête là ?
00:35:57 :Pour moi,c'est bon.Vous n'avez pas un peu de temps ?Moi, j'ai.Moi, c'est bon aussi,oui.Oui ?OK.On va s'amuserun petit peurapidementavec ce qu'on appelleen français,on va dire la fermeture,mais les closures.
00:36:13 :En gros,alors là,je vais vous donnerun exemple simple.On va repartir avec Afin.On va avoir,on va faire comme ça.Vous allez comprendre.
00:36:30 :Je vais faire un,on va peut-être commencerplus simple.X,X,on va mettre un X ici,je vais mettre un Yégal à 2et ensuite,on va avoirune fonction imbriquée.
00:36:50 :OK.C'est un peu bizarre,je sais.Et on va faireun print deXY comme ça.Je pense que je peux fairecomme ça.Et ensuite,si je fais iciX est égal à 1et que je fais unF1X,normalement,ah oui, si j'ai oubliéune petite chose,
00:37:19 :il faut bien que je leretourne.Fonction F2.Voilà.Sinon, ça ne fonctionnera pas.Voilà.OK.Donc là,c'est juste pour vous montrer.Ici, j'ai ma fonction F1.
00:37:35 :OK.J'ai iciun paramètre.J'ai aussi une variabledans F1.Mais il faut savoirqu'en fait,avec le principe de closure,donc en fait,la fonction interne,elle va accéderà la variablede la fonction supérieure.
00:37:52 :Donc là, F1.F2 va accéderaux variablesde la fonction F1.Et ça, en fait,on appelle ça une closure.C'est un espace mémoirequi permet d'utiliserla variable de la fonctionsupérieure, tout simplement.
00:38:02 :Et donc là,la fonction F2,elle est capabled'utiliser icile paramètre de F1et en plusla variable de F1.OK.Est-ce que ça,vous le saviez ou pas ?
00:38:12 :Pas spécialement.Je ne fais pasce genre de choses.C'est bon à savoir.Moi non plus.Moi non plus.Je vous rassure,je n'ai jamais faitfonctionner un briquetcomme ça,mais on peut voirdes petits casoù ça peut avoirdes choses qui peuventêtre plus modulables,on va dire.
00:38:32 :Ici,on va rester sur l'UEF1.On va voir ici,début.Vous allez voir.On va finir là-dessus.Suite.On va partirsur une phrase.Par exemple,si je fais ça,milieu,c'est une phrasequi est une phrasequi est une phrasequi est une phrasequi est une phrase
00:38:49 :qui est une phrasequi est une phraseAttendez.Comment je vais faire ?Milieu de la phrase.Ensuite,j'ai ma fonction iciqui est capableOn va voir une autre suite.
00:39:06 :Et dedans,on va avoir une fin.Et on va voir ici,la fin ça va êtrela fin de la phrase.Et ici,on va faire un returnde...
00:39:21 :Ici, j'ai bien le débutqui est dans F1.J'ai la suite.C'est un peu tordu,on est d'accord.Vous le dites si j'abuse.Là, j'ai bien la fin.
00:39:36 :Et ici,on va faire un trucqu'on va retourner.F2.Mais ici, on ne l'appelle pas, ok ?Je ne vais pas aller à la parenthèse,je retourne juste la fonction.
00:39:47 :Et donc, quand on fait ça,si je fais par exemplephrase...Donc là, si j'ai une phrase...Phrase 1.Je vais faire F1.Etdébutde laphrase.
00:40:05 :Et maintenant,ce que je peux faire...Donc là, j'ai bien F1.J'ai le début de la phrase.Et je peux très bien faire maintenantphrase 1.
00:40:18 :Et du coup,j'ai utilisé icimon paramètre suite 2en appelant phrase 1.Parce que là, j'ai déjà appelé en faitici phrase 1avec début de la phrase, ok ?
00:40:28 :Et maintenant,F1,je peux le rendre modulable.Donc, par exemple,phrase 1,je peux le rendre modulable.Donc là,je vais mettre par exemple,je ne sais pas,je vais mettredébut de la fin.
00:40:40 :Hop.Contrôle Z.Hop.J'ai copié pour après.Voilà.Donc là, j'ai bien début de la phrase.F1,le début qui est ici.Le milieu de la phrasequi est la suite.
00:40:55 :Ensuite, dans F2,j'ai début de la finqui est ici.Etfin de la phrasequi est ici.Ok ?Et en fait,ce que je pourrais très bien faire,phrase 1,je mets début de la finV2.
00:41:12 :V2.Début de la fin V2,par exemple.Là, je l'ai bien dans mon terminal.Je vais nettoyerparce que c'est le bordel.Hop là.Donc là,ce qui se passe,c'est quej'ai bien mon F1et en fait,mon F2 ici.
00:41:33 :Dans mon F1,je retourne F2,la fonction elle-même.Et en fait,du coup,si je crée ici phrase 1comme par exemple,en argumentdébut de la phrase,donc on pourra avoir un autre exemple,mais je peux réutiliser mon phrase 1pour passer un argument différentchaque foisdans mon F2.
00:41:50 :Est-ce que c'est okou est-ce que vous avezfilé mal au crâneou pas ?Moi, j'ai mal au crâne,maisça veut dire qu'en fait,ta fonction devient muable.
00:42:04 :C'est par là.Suis-moi.Vas-y, dis-moi.Non, c'est ça,c'est la fonction.Je ne sais pas si on peutappeler ça comme ça,mais...En fait,c'est modulabledans le sens oùici,en argument ici,par exemple,j'ai bien ma phrase 1que j'ai appeléedébut de la phrase,ok ?
00:42:25 :Donc là,j'ai bien ma phrase 1avec début de la phraseet ensuite,je peux utiliser phrase 1avec différents argumentsqui en fait,seront les argumentsqui seront passésici à F2.
00:42:38 :Ça va ou...Oui, je comprends l'exercice,mais du coup,qu'est-ce que le closurelà-dedans ?Alors, le closure.En gros,le closure ici,bon là,je me suis un peu emballé,mais en gros,le closure,c'est qu'en fait,dans ma fonction F2qui est dans F1,je peux,donc,
00:43:09 :ça c'est bien interne à F2,je peux ici retournerdébut qui est dans F1et suite qui est dans F1.En fait,F2 va avoir accèsà ma variablequi est dans F1et ici,à l'argumentqui va être passédans début.
00:43:27 :Je ne suis pas obligéen fait de repasser ici,par exemple,début en soi.Oui, d'accord.Enfin,je ne dois pas repasserdébut,tout simplement.
00:43:36 :Il ne faut pas faire ça.Il faut...La fonction elle-même,elle a...C'est une notion d'héritageen fait,de variable.On ne parle pas d'héritage,on va parler de closure.
00:43:47 :Une portée,c'est plutôt une portée,oui.La closure,en fait,c'est vraimenten lien avec la portée.La closure fait que,vraiment,votre fonction F2aura accèsà ce qui estdans votre fonction supérieure.
00:44:00 :Voilà.Est-ce que j'ai été assez clairou pas ?Ce n'est pas forcément évident,mais j'espère que...Est-ce que ça a été assez clairou c'est chaud ?
00:44:12 :C'est compliqué.Non, c'est clair,c'est juste...Je ne vois pas trop...Là où je n'arrive pas à me projeter,c'est l'utilisation de ça,en fait.
00:44:22 :Mais sinon,la démonstration,elle est faite.Je te rassure,moi non plus.Je n'ai jamais eude cas où j'ai dû le faire.Après,c'est parce que moi,pour le monde proje fais à 95% du Django.
00:44:38 :Mais même comme ça,je ne vois pas...Ça pourrait être utiledans certains domaines,je pense.Et encore,je ne sais pas.Mais si, si,je pense que si, quand même.
00:44:50 :Ça serait utile dans certains domaines.Mais moi, comme ça,je n'ai pas d'exempleoù ça me serait utile,en tout cas.Mais ça existe.Je voulais vraiment vous montrerque la closure,en fait,le principe de la closure,vraiment,la fonction F2,si on partait sur l'exemplede base de tout à l'heure,
00:45:05 :on va rester là-dessus.À ce moment-là,le x ici,le y qui est égal à 2,notre fonction F2est ici.Elle va faire un return de x,y.
00:45:18 :Donc si je fais ça,x est égal à 1.Si je fais F1,j'envoie mon x,c'est égal à 1.Par contre,toujours pensez à retourner icinotre F2.
00:45:32 :Voilà.Qu'est-ce que j'ai fait ?Comme connerie.J'ai pris F1.J'ai dû faire une erreur.C'est F2.Excusez-moi.Oui.Voilà, c'est bon.J'ai bien 1 et 2.
00:45:56 :Là,ce que je voulais vous montrerà la base,c'est vraiment ça.C'est vraiment icique x et y,ils sont dans F2,et F2 a accès à x et y de F1.
00:46:08 :Voilà.On peut rester là-dessus.C'est bon pour vous, du coup ?Oui.OK.Oui, OK, d'accord.Mais tout à l'heure,le petit côté modulable,c'est le cas icioù j'avais mis un paramètreoù je retournais que F2,la fonction elle-même,et qu'après, du coup,je pouvais appeler une variable
00:46:34 :et attribuer F1avec un argument,et après, ma variable,je pouvais l'appeleravec différents argumentsqui correspondaientà l'argument qui était là.Mais sinon, la closure,basiquement,c'est vraiment le faitd'avoir accèsà ce qui est dans la fonction supérieure.
00:46:51 :Voilà.D'accord.Et je vais m'arrêter là.C'est déjà pas mal pour aujourd'hui.Je pense qu'on s'est bien...On s'est bien torturé,je pense, aujourd'hui.Donc, voilà.
00:47:03 :Est-ce que c'est bon pour vous ?Yes.C'était super, en tout cas.Instructif.Je vais réviser ça,tu vois, ce soir.Ouais.N'hésite pas à le revoirparce que c'est un peu...
00:47:19 :C'est un petit peu gastet, ouais.Donc, voilà.Écoutez, si ça vous a plu,en tout cas,c'est cool.Et puis...Ouais, très bien.Merci.Et puis, il y aura un mentoratmardi de Stéphanequi ferasur le Garbage Collectoravec le module GC,je ne sais pas si vous connaissez.
00:47:42 :Ah, je me suis déjà frotté à çail y a longtemps.Ça va être bien, ça.Ouais.Il y a Stéphane qui parlera de çaet il y a Thierry, normalement,qui doit refaire un mentoratque je vérifie,mais dans la semaine aussi.
00:47:54 :En général, c'est le mercredi.Mais c'est une foire aux questions.Donc, voilà, voilà.Pour ceux qui sont intéressés,juste le 12 décembre,c'est dans longtemps,il y a généralement des événementssur Discordde différentes personnes.
00:48:12 :Vous pouvez aller voir sur l'agenda.Vous allez voir, il y en a différents.Moi, j'en fais un le 12 décembresur Wagtail et Djangosur comment combiner, en fait,Wagtail et Djangoet faire une application webassez puissanteen combinant le meilleur des deux mondes.
00:48:26 :Ah oui !Oui, d'ailleurs, j'ai vu,t'as posté ça,t'as une chaîne YouTube, là, en fait.Ouais.T'en as parlé.Alors, j'avais dit que je la regarderais.
00:48:35 :J'ai pas pris le temps encore,mais d'accord.Donc, c'est dans cet esprit-là, en fait.Ouais.D'accord.Excellent.Bon, la vidéo, la grosse vidéo,elle fait trois heures.
00:48:43 :Donc, bon courage.Ouais, ça se fait, ça se fait.Mais, ouais, ouais, ouais.Donc, parce que je fais beaucoup de Wagtail,moi,enfin, beaucoup de Django,puisque je bosse avec Djangodans mon métier,au niveau en pro, en dev.
00:48:55 :Mais je fais aussi pas mal de Wagtail, ouais.Donc, voilà.Ok, super.Wagtail, c'est quoi ?Je connais pas du tout.Ben, attendez,je vais couper l'enregistrement, après.
00:49:09 :Je vais pouvoir vous montrer.Ben, on peut en parler,on a l'enregistrement allumé.Ça revient même.En fait, Wagtail, c'est...Alors, ça peut être un...
00:49:15 :Je vais couper peut-être mon VS Code.Ou est-ce que je peux pas...Attends.Tac.Hop.Don't save.Tac.Euh...Je vais faire ça.Hop, Wagtail.
00:49:31 :Alors, je vais m'ouvrir un...Je vais mettre un chrome en bas.Ça sera mieux.Si vous voulez voir un peuà quoi sert son Wagtail.
00:49:40 :Par exemple, ici,j'ai mon projet.Projet web.Tac.Ça, c'est mon site perso.Et là, j'ai accès ici à mon admin.Je sais pas si vous voyez, là,par exemple, comme ça.
00:49:53 :Ça, c'est Wagtail.J'ai un back-officeque j'ai fait avec Wagtail.Et en fait, par exemple,là, je suis en train d'écrire un...un article.En fait, Wagtail, c'est faitpour la gestion de...
00:50:05 :de publication.C'est un CMS.C'est pour faire votre propre CMS,en fait, avec Django.Et bien, vous installez Wagtail.Et par exemple, là,je suis en train d'écrire un articlesur...
00:50:16 :sur Wagtail, justement.Et bien, je l'ai sauvegardé,mais je peux très bien direle publier, si je veux.D'accord.Excellent.L'éditeur de texte,il est assez riche.
00:50:27 :Vous voyez, je peux mettre du H2,ce que je veux.Je peux très bien revenir, hop,mettre des images, documents,ce que je veux.Je me suis fait ce qu'on appelleun système de stream field.
00:50:37 :Donc, par exemple,vous voyez, je peux insérerdu code, là, ici.Et bien, par exemple,je peux dire, là,je vais faire une nouvelle partiedans mon article, là, tout en bas.
00:50:46 :Il va être assez long.Hop.Je me suis dit, là,je vais mettre un paragrapheet je mets un bout de code.Donc, j'ai un bout de code,par exemple, hop,je choisis mon langage,ça m'importe.
00:50:56 :Ensuite, boum,je vais écrire,je vais continuer mon article,j'écris, machin.Donc, vous pourrez très bien dire,ici, dans le plus,avoir, par exemple,paragraphe, code, image,autre chose,enfin, beaucoup plus de choses.
00:51:06 :Ça, c'est à vous de le coder.En fait,ce n'est pas comme avec WordPress.Ce n'est pas comme avec WordPressoù vous avez du no code.
00:51:11 :Là, c'est un CMSque vous allez coder vous-même.Voilà.D'accord.C'est pour vous,pour des clients.Si vous faites ça pour quelqu'un,je pense que la personnepeut être assez fand'avoir son propre CMScomme ça, quoi.
00:51:25 :C'est ce que j'allais dire.Pardon.Effectivement,ça,ouais,c'est complètement,enfin, moi, je vois l'idée.Tu dis au client,ben, écoutez,je vous ai fait un petit site,tout ça,et c'est à vous de le mettre à jouret tu pourrais le faire comme ça, quoi.
00:51:40 :Ouais.Après,je vais vraiment gérerleur publication,leur page.Là, par exemple,moi, je sais que ma page,c'est une arborescence,mes pages informations légales,comme ça,j'ai fait un site pour une personne,par exemple,j'ai fait un site pour une personneoù,il est où ?
00:52:02 :Bon, je pense que c'est simple.Où elle a les mentions légales,par exemple,mais ça,c'est écrit dans le HTML,OK ?Avec Wagtail,je peux très bien direque j'ai mes informations légales,j'ai ma page qui est ici.
00:52:14 :La personne pourrait se dire,ben, tiens,elle veut modifier,bon,elle clique sur modifieret puis,elle modifie le contenu comme çaet hop,par exemple,c'est le HTML,voilà.
00:52:25 :C'est sympa, hein ?Ouais, ouais, ouais.Là, c'est vraiment coolet puis,par contre,vous avez accès,bien sûr,à votre admin Django,toujours,voilà.
00:52:35 :Ah oui,forcément.Ouais,vous avez les deuxmais on peut très bien intégrerdes modèles Djangodans l'admin Wagtail.Ça se fait aussi avec du codeet donc,ça vous oblige aussià travailler avec des objetsdu coup,de Wagtail.
00:52:48 :Ce n'est pas des modèles.Là,je suis dans mon fichier de modèles.On ne travaille pasavec des modèles de Djangomais on va travailler,alors,mauvais exempleparce que là,c'est une classe abstraiteque j'ai même crééemais on va travailleravec ce qu'on appelle,ce qu'on appelle,
00:53:02 :là,j'ai où ?Ma classe abstraite,elle doit être là-dedans.Voilà.Donc,là,c'est une classe abstraite,elle n'est pas fermée à ces données.On travaille avec ce qu'on appellel'objet page.
00:53:13 :Voilà.On travaille avec l'objet pagede Wagtail,page qui est là,qui est un modèle,en fait,de Wagtail,en soi.Je ne sais plusoù elle est.
00:53:23 :Bref,en gros,page ici,ça hérite de modèles de Django.D'accord.Wagtail,c'est construit sur Django.Voilà.Ok.C'est une surcouche,en fait.Oui,c'est ça.
00:53:36 :Oui,c'est un frameworksur le framework,on va dire.Oui,c'est ça.Parce que dire une librairie,parce que c'est plusune librairie,c'est...Et donc,c'est pareil,on peut travailleravec ce qu'ils font du Djangoavec le contexte.
00:53:51 :On peut s'amuserà les modifier le contexte,mais en utilisant des objetsà la Wagtail,quoi,le child-of,ça c'est Wagtail.Live,par exemple,c'est pour afficherque ce qui est publiéet pas pu enregistrer.
00:54:03 :Enfin,vous voyez,c'est spécificité comme ça.Travailler avec l'administration,vous rendez ce que vous voulez ici,dans l'administration.Il y a un moteur de recherchequi est intégré à Wagtail,et vous pouvez indexerles champsde votre modèle page,par exemple.
00:54:15 :Enfin,c'est quand mêmevachement puissant.D'accord.Oui,c'est bien abouti.Genre,un truc tout bête,un truc qui m'éclate,ça va très viteà faire.
00:54:26 :Dans mon blog,par exemple,j'écris un article,boum,et j'ai des tags.Et ça,en fait,je l'ai fait avec Wagtail,il y a un modèlequi est quasiment tout prêt.
00:54:36 :Vous cliquez sur le tag,hop,et vous avez des tags.Donc,hop,vous avez tous les articlesqui sont en rapportavec le tag là,par exemple.
00:54:45 :Donc,voilà.Très bien.J'ai une questionpar rapportà ce que tu viensde nous montrer.Oui.J'ai utilisébeaucoupDocuWiki.Est-ce quetu sais,par expérience,s'il y aune passerellequi permetde reprendretoutes les compositions,les articlesqu'on a faitavec DocuWikivers Wagtail ?
00:55:08 :Oui,je ne connais pasDocuWiki,pas du tout,non.Mais,j'ai un casqui est un peuintéressé.Moi,je connais quelqu'unqui,pareil,qui bosse dans le dev.
00:55:23 :Lui,il avait un siteavec WordPress.DocuWiki,c'est un peu comme WordPress,non,c'est quoi ?Non,la différence,c'est qu'il n'y a pasdu tout de base de données,c'est des fichiers textes,en fait.
00:55:36 :Ah.DocuWiki,vers,attendez,je vais couperle partage d'écran,je vais me baisserl'écran,vite fait,puis DocuWiki,je vais regarderce que c'est,vite fait.
00:55:49 :Oui.Donc,je vais quitter ça,hop,code,hop là.Après,je regarderaide mon côté.Ouais,ouais.Si c'était au cas oùt'avais une vidéo.
00:56:02 :Ok,je ne connais pasDocuWiki,je ne connais pasDocuWiki,ok,je ne connais pasDocuWiki,tu vois.Bonne question.L'intérêt de DocuWiki,c'est qu'en fait,du fait qu'il n'y a pasde base de données,on peut copier et déplacervers un autre serveur web,et puis ça reprend,
00:56:19 :il n'y a pas de dumpde base de donnéesà faire,des imports,des choses comme ça.Ouais.C'est simpliste.Derrière,c'est un moteuren PHP,en fait.
00:56:30 :Ok.Ben,d'accord.Donc,je vais me baisseren PHP,en fait.Ok.Ben,parce que là,tout ce que tu vas écrireavec Wagtail,ça va être en base de donnéesde toute façon.
00:56:44 :Oui.Donc,je ne sais pas commenttu pourrais fairela migration,à voir.Mais,il faut savoir quedans Wagtail,tout est en base de données.
00:56:54 :Oui,oui,oui.Donc,voilà.Bon,voilà,c'était le petit bonusde la fin.C'était sympa.Bon boulot.Merci,c'est gentil.Merci.Bon,en tout cas,bon après-miditout le monde.
00:57:14 :Merci.Du coup,tu maintiens lundi,c'est ça ?Non,parce que lundi,j'ai vu qu'il y avaitun événementdéjà sur Discord.Ah,ok.Du coup,moi,je n'ai pas prévupour l'instant,ce sera en fin de semaine.
Aucune occurrence trouvée pour « ».