У меня есть две функции Python, каждая из которых принимает переменные аргументы в своих определениях функций. Чтобы привести простой пример:
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
имеется множество функций.
).
У кого-нибудь есть идеи, как это сделать? Я полагаю, что можно использовать какую-то интроспекцию, но я могу ошибаться.