Передача всех аргументов функции в другую функцию


Я хочу передать все аргументы, переданные функции(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?

2   51   2010-06-29 03:41:29

2 ответа:

явное лучше, чем неявное но если вы действительно не хотите вводить несколько символов:

def func1(a=1, b=2, c=3):
    func2(**locals())

locals() все локальные переменные, поэтому вы не можете установить дополнительные vars перед вызовом func2 или они тоже прошли.

при условии, что аргументы func1 являются только ключевыми аргументами, вы можете сделать это:

def func1(a=1, b=2, c=3):
    func2(**locals())