Je veux passer tous les arguments passés à une fonction (func1
) comme arguments d'une autre fonction (func2
) à l'intérieur func1
Cela peut être fait avec *args, *kwargs
dans le appelé func1
et en les transmettant à func2
, mais existe-t-il un autre moyen?
Initialement
def func1(*args, **kwargs):
func2(*args, **kwargs)
mais si ma signature func1 est
def func1(a=1, b=2, c=3):
comment les envoyer tous à func2, sans utiliser
def func1(a=1, b=2, c=3):
func2(a, b, c)
Existe-t-il un moyen comme en javascript callee.arguments
?
Explicit vaut mieux qu'implicite mais si vous ne voulez vraiment pas taper quelques caractères:
def func1(a=1, b=2, c=3):
func2(**locals())
locals()
sont toutes des variables locales, vous ne pouvez donc pas définir de variables supplémentaires avant d'appeler func2
ou elles seront également transmises.
À condition que les arguments de func1 ne soient que des arguments de mots clés, vous pouvez le faire:
def func1(a=1, b=2, c=3):
func2(**locals())