Передача и использование динамических аргументов в функциях Python - PullRequest
0 голосов
/ 06 ноября 2019

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

def modelFunction(data, a, b, c, offset):
    f = (data[0] * a) + (data[1] * b) + (data[2] * c) + offset
    return f

Я хотел бы создать параметры динамически и создатьлинейное уравнение динамически также. Конечная цель должна состоять в том, чтобы я мог создавать разные функции с разным количеством параметров при каждом вызове. Пример: если мне нужно создать линейное уравнение с двумя параметрами и перехватить его, тогда он создаст такую ​​функцию:

data - это список len = 2

def modelFunction(data, a, b,offset):
    f = (data[0] * a) + (data[1] * b) + offset
    return f

Если мне нужносоздайте линейное уравнение с 3 параметрами и перехватите его, затем создайте такую ​​функцию, как:

data - это список len = 3

def modelFunction(data, a, b, c, offset):
    f = (data[0] * a) + (data[1] * b) + (data[2] * c) + offset
    return f

Я считаю, что оператор * может помочь мне, ноне смог понять это

1 Ответ

0 голосов
/ 06 ноября 2019

Проверка равной длины для краткости опущена:

def modelFunction(data, *coeffs):
    return sum(d * c for d, c in zip(data, coeffs)) + coeffs[-1]
...