Tout d'abord, un paramètre est une entité nommée en la définition de la fonction/méthode qui spécifie un argument. Un argument argument est une valeur transmise à une fonction.
Par exemple,
def rectangle_area(height, width):
pass
rectangle_area(argument_1, argument_2)
height, width
sont les paramètres de la fonction, et argument_1, argument_2
sont les arguments transmis à la fonction. Lorsque l'on parle d'argument positionnel, il s'agit de arguments Cela n'a rien à voir avec la définition de la fonction. width
y height
sont (par défaut en Python) des paramètres positionnels o les paramètres de mot-clé (appelés paramètres de position ou de mot-clé). Il est donc possible de passer des arguments soit par position, soit par mot-clé.
La façon dont vous appelez/passez la valeur à la fonction détermine si elles sont positionnelles. arguments ou mot-clé arguments .
Pour la fonction rectangle_area
nous pourrions l'appeler de la même manière :
rectangle_area(1, 2) # positional arguments
rectangle_area(width=2, height=1) # keyword arguments
- Dans le premier appel, nous transmettons les valeurs en position : 1 est transmis à la hauteur et 2 à la largeur. En d'autres termes, Python déduit que lorsque vous dites
1, 2
signifie que la hauteur est égale à 1 et la largeur à 2 en fonction de la position qui leur est transmise (c'est-à-dire que dans la définition de la fonction, le premier paramètre est l'élément height
et le second est le width
).
- Dans le deuxième appel, nous transmettons les valeurs par mots-clés . Nous indiquons à Python le paramètre auquel nous passons l'argument. Dans le deuxième exemple, nous inversons l'ordre des arguments, mais nous indiquons à Python que la hauteur est toujours 1 et la largeur 2. Les deux appels ont exactement le même résultat.
uniquement par position et uniquement par mot-clé
Ce que peu de gens savent, c'est qu'il est possible de spécifier un paramètre uniquement positionnel en utilisant la fonction /
dans la liste des paramètres (exemple de aquí ).
def func(positional_only1, positional_only2, /, positional_or_keyword): ...
De même, il est possible d'avoir des paramètres uniquement basés sur des mots-clés en utilisant la fonction *
caractère.
def func(positional_or_keyword, *, keyword_only1, keyword_only2): ...
Enfin, nous avons également var-positional et var-keyword (respectivement *args et **kwargs). Cela signifie que vous pouvez avoir une séquence arbitraire d'arguments positionnels ou de mots-clés passés à la fonction.