如何将一个函数和一个多项式与除法运算符组合在一起?

时间:2014-02-16 10:52:19

标签: python function numpy operator-overloading

假设我有以下函数g

import numpy as np
from numpy.polynomial import Polynomial as P

def g(x):
    return np.log(x)

我有以下NumPy多项式q

q = P([0, 1])

我想把它们放在一起:

fancy = g / q
# TypeError: unsupported operand type(s) for /: 'Polynomial' and 'function'

这样我就可以调用fancy(x),这样就相当于说:

g(x) / q(x)

仅仅说:

应该是微不足道的
def fancy(x):
    return g(x) / q(x)

但不,我需要可调用函数本身,因为g在循环的每次迭代中被重新定义。

1 个答案:

答案 0 :(得分:0)

fancy = lambda x : g(x) / q(x)

应该给你你想要的东西。 lambda表达式是python支持动态创建函数对象的一种方式。我说'一'是因为你可以def一个函数不止一次,因为它与分配一个lambda表达式几乎完全相同,定义一个函数对象并将它赋给一个引用。