2015-08-25 2 views
0

К примеру, я определил две функции:Как умножать функции

def f1(x, y): 
    x + y 
def f2(x, y): 
    x**y 

Как получить функцию, такую ​​как:

f = f1 * f2 

Я знаю, что в probfit я могу использовать probfit.AddPdf добавить две функции , Есть ли аналогичный способ умножения двух функций?

ответ

0

Несомненно. Просто определить его:

def f(x, y): 
    return f1(x, y) * f2(x, y) 

Убедитесь, что вы добавить return заявление f1 и f2 так, что они не просто выбросить их результаты.

+0

Благодарим вас за ответ. Проблема в том, что в моей функции много параметров, а функция, умноженная в моем случае, представляет собой сумму нескольких отдельных функций. Поэтому я не могу использовать этот простой метод в своей программе. Знаете ли вы, что любой пакет может умножить две функции и объединить параметры двух функций в соответствии с их именем? – liang

1

Вы можете определить новую функцию, которая возвращает результат этих двух функций, умноженное:

def f1(x, y): 
    return x + y 

def f2(x, y): 
    return x**y 

def f(x, y): 
    return f1(x, y) * f2(x, y) 

Или, если вы хотите, чтобы умножить 2 функции, не зная их арг, вы могли бы сделать что-то вроде этого:

def f(*args): 
    return f1(*args) * f2(*args) 

Который будет действовать точно так же:

print(f(2, 3)) # => 40 

И вы можете использовать лямбда, если хотите, чтобы она была короче:

f = lambda x, y : f1(x, y) * f2(x, y) 
+0

Благодарим вас за ответ. Проблема в том, что в моей функции много параметров, а функция, умноженная в моем случае, представляет собой сумму нескольких отдельных функций. Поэтому я не могу использовать этот простой метод в своей программе. Знаете ли вы, что любой пакет может умножить две функции и объединить параметры двух функций в соответствии с их именем? – liang

+0

Существует не более краткий способ умножения/суммирования их неявно, как вы описываете. Но если вы опишете, что делают эти функции, и почему у вас их так много, я мог бы придумать лучшее решение. – slang

Смежные вопросы