Comme des travailleurs qui travaillent pour vous
Supplément du cours 7 - en Python
Il existe plusieurs fonctions dites « natives » qu'on peut utiliser en les appelant, tout simplement. Vous en employez depuis la première semaine :
Personne ne vous a montré le code de print. Vous l'appelez, il fait le travail : c'est tout l'intérêt.
Un vrai exemple : abs(-10)
Nous lui avons passé 4 paramètres : 2 valeurs et 2 variables.
Un vrai exemple : max(2, 5)
Sans paramètre
Avec paramètres
La documentation du module math :
docs.python.org/fr/3/library/math.html
abs et max sont natives ; pow, floor et radians sont rangées dans le module math, qu'on importe d'abord.
C'est bien beau d'appeler des fonctions et de faire travailler les travailleurs.
Mais si on laisse cela comme cela, c'est comme laisser le résultat du travail en plan, ne pas le cueillir.
Chaque appel est remplacé par son résultat... qui n'est rangé nulle part. (Dans un calepin, seule la dernière ligne s'affiche ; dans un programme, rien du tout.)
Merci de ne pas gaspiller notre travail !!!
On attrape chaque résultat dans une variable
C'est comme si Python avait écrit
Comme on peut le constater dans les exemples :
print(abs(-10)), if max(a, b) > 10:...Avec variable qui contient 3 et une fonction calculerCube :
À l'appel, temps verse son contenu dans la fonction : c'est comme si une variable chiffre : int = 7 était déclarée juste dans la fonction.
Résultat
Le 7 vient du print(chiffre) dans la fonction ; le 343 est le calcul récupéré dans r.
Engager un nouveau travailleur
def.: float et -> float sont les indications de types vues dans le R07 : ce que la fonction reçoit et ce qu'elle retourne.
On va coder cette fonction de base (genre Hello World) :
Résultat
Personne n'a appelé le travailleur ! On teste notre fonction en l'appelant à partir du programme principal :
Résultat
On doit appeler la fonction dès que son squelette est fonctionnel, AVANT d'écrire le code dedans.
Résultat
pass ne fait rien : la fonction retourne None, mais l'appel fonctionne. On sait que le nom, les parenthèses et les paramètres sont bons ; on peut maintenant écrire le calcul.
Il faut savoir :
return.On va coder cette fonction qui calcule et affiche un carré, puis la tester en lui passant un chiffre à calculer :
Résultat
Le résultat est affiché, mais pas retourné : le programme principal ne peut plus s'en servir.
On va coder cette fonction qui calcule un cube et le retourne, puis la tester en lui passant un chiffre ET en récupérant le résultat :
Résultat
Dans le programme principal, chiffre n'existe pas
Ici, temps a été copié dans chiffre le temps du travail ; ensuite chiffre disparaît.
Dans la fonction, temps est lisible... hélas
En Java, c'était une erreur. Python, lui, va lire la variable du dehors : la fonction dépend alors d'un nom qu'elle ne contrôle pas, et elle cassera le jour où temps changera de nom. On passe la valeur en paramètre.
Avantages et désavantage
Avant : le calcul est copié trois fois
Après : ce qui diffère devient le paramètre celsius
Les deux programmes affichent exactement la même chose : 53.6, 70.7, 60.8.
def verbeEnMinuscule(parametre : type) -> type: puis le code en retrait.return. Le reste reste dans la fonction.
Comment appelle-t-on un travailleur ?
Par son nom
On dit simplement son nom :round,len,max... suivi de parenthèses.Avec du matériel
On n'oublie pas de lui donner du matériel à travailler : des données, entre les parenthèses.