Python
Partie 2
1. Les fonctions
Lorsqu’une tâche doit être réalisée plusieurs fois par un programme avec seulement des paramètres différents,on peut l’isoler au sein d’une fonction. Une fonction est une suite d’instruction que l’on peut appeler avec un nom.
Voici deux exemples de fonctions.
Hé! Mais il ne se passe rien quand j’exécute les programmes précédents ! Elle ne dit rien du tout la fonction !
En effet, il faut appeler la fonction :
Le mot clé def est utilisé pour définir une fonction, suivi du nom de la fonction. Le nom de la fonction est suivi, entre parenthèses, des paramètres de la fonction, deux points et ensuite le corps de la fonction.
Pour appeler la fonction on utilise son nom suivi, entre parenthèses, des arguments :
Le mot clé return est utilisé pour retourner une valeur. Attention, print ne retourne pas une valeur ! La valeur est simplement affichée.
Remarque : En toute rigueur on devrait parler de procédure plutôt que de fonction. La différence qui les sépare est la valeur de retour. Une procédure est un groupe d’instructions qui ne renvoie pas de valeur après leur exécution. Une fonction, quant à elle, est en réalité une procédure qui retourne une valeur (de type primitif ou complexe) ou un objet.
Écrivez une procédure table qui affiche la table de multiplication de n (n étant un paramètre de la fonction).
Ensuite lancez table(7).
Le résultat :
Ici, on voit bien l’intérêt de passer par une procédure. Nous n’avons pas besoin de récrire le programme pour obtenir la table de 6.
Portée des variables :
Testons le code suivant :
Nous nous retrouvons avec une erreur : NameError: name ‘a’ is not defined
En effet, une variable a est créée dans le bloc de la fonction et détruite à la fin du bloc, c’est une variable locale.
Espace global – Mon programme
Pour qu’une variable définie dans un espace local, soit connu dans l’espace global, elle doit être précédée du mot-clé global.
Testez le code suivant pour bien comprendre :
Le résultat :
Remarque : Évitez autant que possible d’avoir recours au mot-clé global. Voir : Variable globale Inconvénients
Petit quiz sur la portée des variables :
Deux exemples :
Écrivez une fonction permettant de calculer la puissance n-ième d’un nombre entier p.
Écrivez une fonction permettant d’afficher les termes de la suite de Syracuse à partir d’un entier n.
Un exercice pour les curieux :
Écrivez une version récursive de la fonction précédente.
Mais c’est quoi la récursivité : wiki récursivité
Bonus : Il est aussi possible d’utiliser des fonctions anonymes (ou lambda).
Deux exemples de fonctions :