распаковка аргумента функции [дубликат]

На этот вопрос уже есть ответ здесь:

Распаковать список в Python? 3 ответа

если функция принимает 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)]

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

Ответы на вопрос(2)

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

func1(*func2(...))

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

Решение Вопроса

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

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

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

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

func1(*func2(...))

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

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

Ваш ответ на вопрос