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
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.
(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