Les fonctions Python

Une fonction (ou function ) est une suite d'instructions que l'on peut appeler avec un nom.

Python permet de découper les programmes grâce à des fonctions.

Comment et pourquoi définir et utiliser des fonctions

Pour définir une nouvelle fonction, il faut écrire son entête qui commence par le mot-clé « def » suivi du nom de la fonction et des paramètres appelés dans le jargon standard paramètres formels entourés de parenthèses, le tout terminé par le caractère deux-points (« : »).

Le corps de la fonction est identifié par l'ensemble des lignes de code qui suivent indentées par rapport à l'entête.

1
def nom (paramètres formels):
2
    corps de la fonction

L'utilisation de la fonction se fait quand une instruction donne le nom de cette fonction avec les paramètres effectifs, appelés généralement arguments correspondants.

1
nom(arguments)

Chaque fonction peut être vue comme un outil résolvant un certain problème. Les autres fonctions peuvent alors utiliser cet outil sans se soucier de sa structure, juste pour le résultat qu'il donne. Pour pouvoir l'utiliser, il leur suffit de savoir comment l'employer, c'est-à-dire de connaître le nom de la fonction, les valeurs qu'elle nécessite et la façon dont elle renvoie un ou plusieurs résultats.

Cette technique a, en particulier, deux avantages :

  • chaque fonction peut (généralement) être testée indépendamment du reste du programme ;

  • si une partie contient une séquence d'instructions qui doit être réalisée à différents endroits du programme, il est possible de n'écrire cette séquence qu'une seule fois.

En gros, une fonction peut être vue comme une opération dont la valeur est définie par le programmeur en fonction des paramètres reçus.

Exemples de fonctions avec paramètres

Fonction "est_pair"

La fonction est_pair est une fonction booléenne, c'est-à-dire dont le résultat est une valeur booléenne, qui renvoie vrai (True) si la valeur reçue en paramètre est paire.

Copier le code suivant dans votre IDE Python.

1
def est_pair(x):
2
    """Renvoie vrai si et seulement si x est pair."""
3
    return x % 2 == 0
4
5
a = int(input("Entrez un nombre entier impair : "))
6
if est_pair(a):
7
    print("Il n'est pas impair !")

Tester cette fonction dans la console.

Fonction "somme"

Même si en pratique ce n'est généralement pas le cas, en théorie une fonction Python peut recevoir différents types de paramètres et renvoyer des résultats de types différents : c'est ce que l'on appelle la surcharge des paramètres.

Par exemple avec la définition :

1
def sum(a,b):
2
    """renvoie la somme ou concaténation des deux paramètres"""
3
    return a+b
4
5
a = int(input("Entrez la valeur de a : "))
6
b = int(input("Entrez la valeur de b : "))
7
8
print(sum(a,b))

Tester cette fonction dans la console avec les 3 appels successifs suivants :

  1. a=3 et b=5 ;

  2. a=cha et b=peau ;

  3. a=3 et b=peau.

Que constatez-vous dans le 3ème cas ?

La fonction sum peut donc faire des sommes de valeurs, des concaténations de texte (qui consistent à coller deux textes ensemble) ou même produire des erreurs, suivant le type des arguments utilisés. Dans le jargon informatique, on parle de polymorphisme, ce qui signifie que quelque chose, ici une fonction, de même forme, peut en fait représenter plusieurs choses ou comme ici, avoir des effets différents.

Fondamental

En Python, il est donc généralement fort conseillé, si l'on n'est pas sûr du code appelant, que la fonction vérifie elle-même que les arguments donnés aient un type adéquat pour son exécution.