Как передать аргументы переменной длины параметрам другой функции? - PullRequest
0 голосов
/ 21 марта 2019

Как передать аргументы переменной длины параметрам другой функции?

def fun(a,b,c):
    #calculating
    pass

from inspect import signature

def example(*args):
    if len(args) >= len(signature(fun).parameters):
        fun(args); # how do i do this without modifying fun function
        return
    print("error")

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Используйте нарезку, чтобы убедиться, что у вас есть правильное количество параметров, затем используйте распаковку, чтобы передать их в качестве отдельных аргументов.

def example(*args):
    numargs = len(signature(fun).parameters)
    if len(args) >= numargs:
        return fun(*args[:numargs])
    print("not enough arguments")
0 голосов
/ 21 марта 2019

Измените fun(args) на fun(*args[:3]).Это берет только первые 3 элемента args и распаковывает их.

Редактировать: Как kindall пишет в своем ответе, вы также должны параметризовать numargs.

...