Передача всех аргументов функции другой функции
Я хочу передать все аргументы, переданные функции (func1
) в качестве аргументов другой функции (func2
) внутри func1
Это можно сделать с помощью *args, *kwargs
в вызываемом func1
и передать их до func2
, но есть ли другой способ?
Первоначально
def func1(*args, **kwargs):
func2(*args, **kwargs)
но если моя подпись func1
def func1(a=1, b=2, c=3):
как я могу отправить их все в func2, не используя
def func1(a=1, b=2, c=3):
func2(a, b, c)
Есть ли способ, как в javascript callee.arguments
?
Ответы
Ответ 1
Явный лучше, чем неявный, но если вы действительно не хотите вводить несколько символов:
def func1(a=1, b=2, c=3):
func2(**locals())
locals()
- все локальные переменные, поэтому вы не можете устанавливать лишние вары перед вызовом func2
, иначе они также будут переданы.
Ответ 2
Если аргументы func1 являются только аргументами ключевого слова, вы можете сделать это:
def func1(a=1, b=2, c=3):
func2(**locals())