аргумент функции распаковки

если функция принимает n число аргументов, и есть еще одна функция, которая возвращает последовательность с n количеством элементов (или у меня есть последовательность с n количеством элементов), есть ли способ «отобразить» эти две функции (или сделать первая функция принимает последовательность из n числа элементов в качестве результата ввода и возврата). Я не хочу (и, возможно, не могу в некоторых случаях) редактировать функцию самостоятельно и изменять ее параметры аргументов и типы возвращаемых значений.

то есть)

def func1(x, y, z): return x+y+z def func2(w): return [i for i in range(w,w+3)] 

cant func1(func2( ... )) в этом случае.

Вы ищете синтаксис аргумента *args :

 >>> def foo(bar, baz, spam): ... print bar, baz, spam ... >>> arguments = [1, 2, 3] >>> foo(*arguments) 1, 2, 3 

При передаче аргументов вызываемому, любое выражение, которому предшествует asterix, интерпретируется как последовательность позиционных аргументов и расширяется для передачи в виде отдельных аргументов вызываемому объекту (функции, методу и т. Д.).

Для вашего примера это будет:

 func1(*func2(...)) 

Существует эквивалент ключевого слова, использующий ** двойные звездочки (принимает сопоставление), и вы также можете использовать тот же синтаксис в подписях функций.

См. Документацию по выражениям вызова , а также синтаксис зеркального отображения подписи, документацию по определениям функций .

Это называется распаковкой аргументов и записывается как:

 func1(*func2(...)) 

См. https://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists