Les procédures et fonctions en Python
En informatique, une fonction est une entité qui encapsule une séquence d’instructions effectuant un traitement spécifique indépendant du reste du programme. Cette fonction peut être réutilisée dans le même programme, ou dans un autre. Il faut voir une fonction comme un outil, et la bibliothèque comme la boite à outils. Il est commun que les développeurs réutilisent pendant toutes leurs carrières les outils conçus par eux-mêmes ou d’autres développeurs.
Les fonctions permettent de diviser un problème en décomposant le programme à réaliser en portions de code plus faciles à utiliser et à entretenir. Les instructions dans la fonction sont encapsulées à l’intérieur de celle-ci, c’est-à-dire que la fonction devient une boite noire. Le programmeur peut faire appel à la fonction sans se préoccuper des détails internes à celle-ci. Par exemple, le pseudo code suivant renvoi la valeur maximum des deux variables.
def max(a, b): if a > b: return a return b
Maintenant que cette fonction existe, il est possible de l’utiliser, comme s’il s’agissait d’instruction standard, ce qui simplifie nos algorithmes. La fonction doit être, soit déclarée dans le même fichier :
def max(a, b): if a > b: return a return b a = float(input("Entrez une valeur: ")) b = float(input("Entrez une valeur: ")) c = float(input("Entrez une valeur: ")) r = max(a, b) r = max(c, r) print("La valeur maximum vaut", r)
Soit, il est possible d’importer cette-dernière depuis un autre fichier. Séparer vos fonctions de vos algorithmes, permets de réduire le couplage des programmes. C’est-à-dire que les fonctions que vous écrivez aujourd’hui, pourraient être réutilisée plus tard dans votre carrière. Dans la communauté Python, il existe une immense de bibliothèque offrant des fonctionnalités prête à l’emploi qui peuvent être importée dans vos algorithmes.
# Ce fichier s'appelle: nomDuFichier.py def nomDeLaFonctionMaximum(a, b): if a > b: return a return b
# Ce fichier s'appelle: main.py from nomDuFichier import nomDeLaFonctionMaximum a = float(input("Entrez une valeur: ")) b = float(input("Entrez une valeur: ")) r = nomDeLaFonctionMaximum(a, b) print("La valeur maximum vaut", r)
Le passage par copie ou par référence
Dans les langages de programmation, une copie des variables provenant de la fonction est reçue dans les paramètres au lieu de travailler sur les véritables variables de la fonction appelante. Ce choix est fait pour des raisons de sécurité pour l’intégrité des données. Pour tous les types simples, en python, il s’agira toujours d’une copie des variables ; et pour tous les types complexes, il s’agira de référence.
En python, vous n’avez pas la liberté de choisir précisément si vous préférez l’un ou l’autre. En contrepartie, vous aurez la possibilité de renvoyer plusieurs valeurs à la fois. Par exemple, la fonction SWAP
peut être implémentée comme ceci en Python:
PROCÉDURE swap(↕a: ENTIER, ↕b: ENTIER) VARIABLE c: ENTIER c <- a a <- b b <- c FIN PROCÉDURE DEBUT VARIABLE a, b: ENTIER a <- 7 b <- 42 swap(a, b) ECRIRE a FIN
def swap(a, b): return b, a a = 7 b = 42 a, b = swap(a, b) print(a)