Передача всех аргументов функции в другую функцию - PullRequest
61 голосов
/ 29 июня 2010

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

50 голосов
/ 29 июня 2010

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

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

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

12 голосов
/ 29 июня 2010

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

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