Un travailleur attend dans l'atelier qu'on lui confie une mission. Tant qu'on ne l'appelle pas, il ne bouge pas : il reste la, pret a servir.
Une fonction, c'est pareil : on la definit une fois, puis on la fait travailler autant de fois qu'on veut.
def forme le travailleur et inscrit son nom sur sa salopette. Tant qu'on ne l'appelle pas (saluerLaForet()), il reste les bras croises dans l'atelier.
On monte une marche a la fois : d'abord une simple action, puis on lui tend un baluchon (un parametre), puis on lui fait relancer un ballon (un return).
Le palier le plus simple : aucun parametre. Pas de baluchon a lui tendre, les parentheses restent vides : saluer(). On l'appelle, il fait son action - ici, afficher un message.
On lui tend un baluchon (le parametre nom) et il s'en sert pour son action. Mais il ne relance aucun ballon : pas de return. La fonction agit (elle affiche), elle ne rend pas de valeur.
Les parentheses, c'est le baluchon qu'on glisse dans la main du travailleur en l'envoyant. Ce qu'on met dedans (les arguments), il le retrouve dans ses parametres : ici largeur vaut 3 et hauteur vaut 4.
return, c'est le lancer du ballon : a la fin, le travailleur te relance le resultat. Tu l'attrapes dans une variable (superficieJardin) et tu peux t'en reservir partout ensuite.
NoneCe qui distingue les deux, c'est le ballon (le return), pas le baluchon : une procedure aussi peut recevoir un baluchon. La vraie question, c'est : est-ce qu'il te renvoie quelque chose ?
On embauche le travailleur une seule fois, puis on le rappelle avec un baluchon different a chaque fois. C'est toute la puissance des fonctions : ecris une fois, reutilise partout.
Ce qu'il y a dans le baluchon (largeur, hauteur, resultat) n'existe que pendant sa mission, sur le chantier.
Une fois le travail fini, tout ca disparait. Pour garder un resultat, il faut le relancer avec return : c'est ce qu'on appelle des variables locales.
dessinerMandala appelle son collegue dessinerCercles a chaque tour. On batit un gros travail en faisant collaborer de petits travailleurs bien nommes.
La docstring, c'est la fiche de poste du travailleur : une phrase entre triples guillemets """…""", juste sous le def.
Elle decrit sa mission : ce qu'il prend dans son baluchon et le ballon qu'il relance. help() l'affiche a quiconque arrive sur le chantier.
assert, c'est le contremaitre qui verifie que le travailleur relance bien le bon ballon. Si la valeur est fausse, le programme s'arrete et signale le bug.
Inspecter sa machine avant de s'en servir, c'est l'habitude des bons equipes.
Ca marche ! Mais ce travailleur fait deux metiers a la fois : il compte et il redige la phrase.
Avec un ballon qui contient deja une phrase toute faite, impossible : il faut tout reecrire. Le probleme n'est pas la f-string - c'est qu'on a charge le compteur de rediger en plus.
La f-string d'Adem a sa place - mais dans le travailleur decrireForet, pas chez le compteur. Besoin d'un graphique demain ? J'embauche un nouveau travailleur dessinerForet et je garde compterArbres tel quel. Le compteur ne change jamais.
return)Un travailleur qui calcule relance son ballon et n'affiche jamais. Un travailleur qui affiche ne calcule jamais. Chacun, un seul metier.
Ouvre le jardin de mandalas. Repere les blocs de code repetes. Embauche tes propres travailleurs (des fonctions), tends-leur le bon baluchon (les parametres) et fais-les te relancer le ballon (return).