У меня есть две функции Python, каждая из которых принимает переменные аргументы в своих определениях функций. Чтобы дать простой пример:Список Python как * args?
def func1(*args):
for arg in args:
print arg
def func2(*args):
return [2 * arg for arg in args]
Я хотел бы, чтобы составить их - как в func1(func2(3, 4, 5))
- но я не хочу args
в func1
быть ([6, 7, 8],)
, я хочу, чтобы это было (6, 7, 8)
, как если бы оно был назван как func1(6, 7, 8)
, а не func1([6, 7, 8])
.
Как правило, я бы просто использовал func1(*func2(3, 4, 5))
или имел func1
, чтобы проверить, был ли args[0]
. К сожалению, я не могу использовать первое решение в этом конкретном экземпляре, и для применения второго потребуется выполнить такую проверку во многих местах (в функции func1
есть много функций).
Есть ли у кого-нибудь идеи, как это сделать? Я предполагаю, что какая-то интроспекция может быть использована, но я могу ошибаться.
"' Я не могу использовать первое решение в данном конкретном instance'" Почему нет? – interjay
Я использую парсер, который вызывает функции Python, но не поддерживает распаковку в грамматике. – exupero