4.2. Arguments optionnels et nommés

Python permet aux arguments de fonction d’avoir une valeur par défaut, si la fonction est appelée sans l’argument il a la valeur par défaut. De plus, les arguments peuvent être donnés dans n’importe quel ordre en utilisant les arguments nommés. Les procédures stockées de Transact/SQL sous SQL Server peuvent faire la même chose, si vous êtes un as des scripts sous SQL Server, vous pouvez survoler cette partie.

Voici un exemple de info, une fonction avec deux arguments optionnels :


def info(object, spacing=10, collapse=1):

spacing et collapse sont optionnels car ils ont des valeurs par défaut définies. object est obligatoire car il n’a pas de valeur par défaut. Si info est appelé avec un seul argument, spacing prend pour valeur 10 et collapse la valeur 1. Si info est appelé avec deux arguments, collapse prend encore pour valeur 1.

Imaginez que vous vouliez spécifier une valeur pour collapse mais garder la valeur par défaut pour spacing. Dans la plupart des langages, vous ne pouvez pas le faire, vous auriez à spécifier les trois arguments. Mais en Python, les arguments peuvent être spécifiés par leur nom, dans n’importe quel ordre.

Exemple 4.4. Appels de info autorisés

info(odbchelper)                    1
info(odbchelper, 12)                2
info(odbchelper, collapse=0)        3
info(spacing=15, object=odbchelper) 4
1 Avec un seul argument, spacing prend pour valeur 10 et collapse 1.
2 Avec deux arguments, collapse prend pour valeur 1.
3 Ici, vous nommez l’argument collapse explicitement et spécifiez sa valeur. spacing prend la valeur par défaut 10.
4 Les arguments obligatoires (comme object, qui n’a pas de valeurs par défaut) peuvent aussi être nommés et les arguments nommés peuvent apparaître dans n’importe quel ordre.

Cela a l’air confus jusqu’à que vous réalisiez que les arguments sont tout simplement un dictionnaire. La manière «normale» d’appeler les fonctions sans le nom des arguments est en fait un raccourci dans lequel Python fait correspondre les valeurs avec le nom des arguments dans l’ordre dans lequel ils sont spécifiés par la déclaration de fonction. Dans la plupart des cas, vous appellerez le fonctions de la manière «normale», mais vous aurez toujours cette souplesse pour les autres cas.

NOTE
La seule chose que vous avez à faire pour appeler une fonction est de spécifier une valeur (d’une manière ou d’une autre) pour chaque argument obligatoire, la manière et l’ordre dans lequel vous le faites ne dépendent que de vous.

Pour en savoir plus