Paramètres positionnels ou nommés, valeurs par défaut

Une fonction peut accepter un nombre quelconque de paramètres : leurs noms n’ont pas beaucoup d’importance (ils servent à nommer localement les valeurs transmises lors de l’appel à la fonction). En revanche l’ordre dans lequel apparaissent ces paramètres dans la définition de la fonction est important.

On peut donner une valeur par défaut à un ou plusieurs arguments d’une fonction. Pour cela, dans la définition de cette fonction, et si on note arg le nom de l’argument et val sa valeur par défaut, on remplacera arg par arg = val.

Si un argument reçoit une valeur par défaut, il peut donc être omis lors de l’appel de la fonction.

Mais pour qu’il n’y ait aucune ambiguïté, les arguments avec valeurs par défaut (dans la définition de la fonction) doivent suivre ceux qui n’en ont pas.

Dans les exemples précédents :

  • pour appeler la fonction f , il faut écrire explicitement f (x, y, z, t) en précisant les valeurs des quatre arguments.
  • évaluer g(x, y, z) équivaut à évaluer g(x, y, z, 10) ; on peut bien sûr écrire g(x, y, z, 1000) si on tient à donner la valeur 1000 au quatrième argument t.
  • évaluer h(x, y) équivaut à évaluer h(x, y, 5, 10) ; évaluer h(x, y, 999) équivaut à évaluer h(x, y, 999, 10) ; on peut bien sûr écrire h(x, y, 9, 6) si on tient à donner la valeur 9 à l’argument z et la valeur 6 à l’argument t.
  • la définition de la fonction k est illégale ; par exemple, dans k(1, 3, 5), comment distinguer (x = 1, y = 3, z = 5, t = 10) de (x = 1, y = 2, z = 3, t = 5) ?

Les arguments avec valeurs par défaut offrent une possibilité intéressante lors de l’appel de la fonction.

On peut en effet remplacer f (· · · , valeur, · · · ) par f (· · · , arg = valeur, · · · ). Il faut bien sûr que le(s) nom(s) arg utilisés ici dans l’appel de f correspondent au(x) nom(s) arg utilisés dans la définition de cette fonction.

Il faut également que les arguments ainsi nommés suivent les arguments non nommés lors de l’appel (ces derniers sont alors simplement appelés arguments positionnels). Enfin, et c’est là le principal intérêt, les arguments nommés peuvent être donnés dans n’importe quel ordre.

Pour comprendre comment ça fonctionne, prenons un exemple très simple. La fonction f prend cinq arguments : les deux premiers sont obligatoires et les trois suivants sont optionnels (ils reçoivent une valeur par défaut dans la définition de f ).

Notre fonction f se résume à afficher les valeurs qu’elle reçoit pour les cinq variables locales x, y, z, t, u.

Voici la définition de f :

Ensuite, on effectue plusieurs appels à la fonction f , en omettant tout ou partie des arguments par défaut.

Dans cette deuxième série d’exemples, on voit qu’il est possible de préciser des valeurs pour un ou plusieurs des arguments optionnels, et ce dans un ordre quelconque, à condition de préciser d’abord les valeurs des deux arguments positionnels (c’est-à-dire non nommés) x et y.

Retour à l’accueil du cours Python/Numpy

Sommaire du chapitre 4

  1. La valeur None, et l’instruction return
  2. L’espace de noms global
  3. L’espace de noms local d’une fonction
  4. Remarques sur les espaces de noms emboîtés
  5. Paramètres positionnels ou nommés, valeurs par défaut
  6. Rattrapage des exceptions
  7. Fonctions lambda
  8. Documentation des fonctions