[PYTHON] Arguments optionnels et * args, ** kwargs

Il est correct de mettre * args, ** kwargs après l'argument optionnel

Il est possible de mettre un argument arbitraire avant * args. Le code suivant passe.

optionalarg.py


def foo(x=10, *args, **kwargs):
    return x, args, kwargs


print foo(12, 13, 14) 
#=> (12, (13, 14), {})

Cependant, il n'est pas possible de définir un argument obligatoire après un argument facultatif. Le code suivant entraînera une erreur de syntaxe.

syntaxerror.py


def foo(x=10, y, *args, **kwargs):
    return x, y, args, kwargs
# SyntaxError: non-default argument follows default argument

À propos des termes "argument arbitraire" et "argument nommé"

Il existe les termes argument optionnel et argument nommé, mais comment les utiliser correctement?

Si vous lisez "Dive In Python", vous pouvez deviner ce qui suit.

  1. "Argument optionnel" lorsqu'il est utilisé pour définir une fonction. Une paire "d'arguments essentiels".
  2. "Arguments nommés" pour spécifier un nom pour l'appel de fonction.

(Lien: version traduite de cocoatomo car il est difficile de lire la version anglaise) http://cocoatomo.iza-yoi.net/DIP/power_of_introspection/optional_arguments.html

Recommended Posts

Arguments optionnels et * args, ** kwargs
Remarques sur les * args et ** kargs
python * args, ** kwargs Notes d'utilisation
Divers arguments de fonctions en Python (arguments de position, arguments optionnels, arguments de longueur variable, arguments de mots-clés) def func (arg, * args, ** kwargs)
python3x: Que signifient * args et ** kwargs comme paramètres?
Ordre des arguments pour RegularGridInterpolator et interp2d
Un mélange d'arguments de position, de tapotement et de dictionnaire
[Python] Arguments de fonction * (étoile) et ** (étoile double)