5.3. Les paramètres¶
Lorsque l’on souhaite qu’une fonction travaille sur des valeurs particulières, il faut lui fournir ces valeurs en entrée. Cela permet à la fonction de traiter des données spécifiques et d’obtenir un résultat qui en dépend. On appelle ces valeurs d’entrée les paramètres (ou arguments) de la fonction.
Note
Les termes paramètre et argument sont souvent utilisés de manière interchangeable, même s’il existe une distinction subtile : l’argument désigne la valeur fournie lors d’un appel de fonction alors que le paramètre correspond à la variable locale de la fonction qui reçoit cette valeur. On parle aussi de paramètre effectif pour désigner la valeur fournie et de paramètre formel pour la variable locale. Par la suite, nous utiliserons de préférence le terme générique de paramètre dans les deux cas.
Les paramètres sont fournis à la fonction entre les deux parenthèses lors de son appel.
print("Je suis un paramètre de print() !")
C’est dans la déclaration d’une fonction, entre les parenthèses, qu’il faut annoncer qu’elle attend des paramètres.
def function_name(arg1, arg2, ...):
function_body
Les variables arg1
et arg2
sont des paramètres, c’est à dire des variables n’existant qu’à l’intérieur de la fonction et qui prennent comme valeurs initiales celles fournies à la fonction lors de son appel.
L’association se fait dans l’ordre, de gauche à droite.
Ainsi, arg1
recevra la valeur du premier paramètre reçu, arg2
du deuxième, etc.
Les paramètres doivent être séparés par des virgules.
Améliorons à présent notre fonction greet()
en ajoutant un paramètre question
qui s’affichera après la salutation.
def greet(question): # `question` est le 1er (et seul) paramètre
print("Bonjour, " + question) # on affiche la question reçue
greet("comment allez-vous ?") # on appel la fonction
greet("avez-vous bien dormi ?")
Bonjour, comment allez-vous ?
Bonjour, avez-vous bien dormi ?
5.3.1. Valeur par défaut des paramètres¶
Il arrive que l’on souhaite rendre un paramètre facultatif.
Par exemple, si l’on désire appeler la fonction greet()
sans paramètre pour qu’elle affiche la question la plus usuelle "comment allez-vous ?"
dans la console, on serait tenté de ne rien indiquer entre les parenthèses comme lorsque que la fonction n’avait pas de paramètre.
Or cela ne fonctionne pas et Python affiche un message d’erreur.
En effet, Python attend un paramètre pour donner une valeur à la variable locale question
.
La solution est d’assigner à question
une valeur par défaut grâce à l’opérateur d’assignation =
.
def greet(question="comment allez-vous ?"):
print("Bonjour, " + question)
greet()
Bonjour, comment allez-vous ?
De cette manière, si aucun paramètre n’est précisé, question
prend sa valeur par défaut et la question standard est affichée.
Note
Si la fonction possède plusieurs paramètres, ceux qui ont des valeurs par défaut doivent impérativement se trouver en dernier puisqu’ils sont facultatifs. Cela permet à Python de déterminer à quel paramètre correspond chaque valeur passée à la fonction.
5.3.2. Paramètres nommés¶
En Python, il est également possible de transmettre une valeur à une fonction en désignant le paramètre correspondant par son nom. Cela permet de ne pas respecter l’ordre de déclaration des paramètres.
def greet(name, question="comment allez-vous ?"):
print("Bonjour " + name + ", " + question)
greet("Alice") # un seul paramètre identifié par sa position (2e paramètre par défaut)
greet("Alice", "où vas tu ?") # deux paramètres identifiés par leur position
greet(question="as-tu une minute ?", name="Alice") # paramètres identifiés par leur nom
Bonjour Alice, comment allez-vous ?
Bonjour Alice, où vas tu ?
Bonjour Alice, as-tu une minute ?