是否可以直接从函数实现输出数学函数?
class MyFunction:
def __init__(self, func):
self.func = func
def math_representation(self):
# returns a string representation of self.func
f = lambda x: 3*x**2
myFunc = MyFunction(f)
print(myFunc.math_reprentation()) #prints something like 3*x**2
当然,使用表示作为参数构造对象是可能的,并且是一个简单的解决方案。但想法是生成这种表示。 我也可以使用表示数学运算的对象来构建函数,但我们的想法是在常规(lambda)函数上进行。
我真的没有办法让这种情况发生,但我很好奇。 感谢您的任何帮助和建议
答案 0 :(得分:5)
正如我所说,如果你想让它更复杂,可以使用SymPy,但对于简单的函数(和可信输入),你可以这样做:
class MathFunction(object):
def __init__(self, code):
self.code = code
self._func = eval("lambda x: " + code)
def __call__(self, arg):
return self._func(arg)
def __repr__(self):
return "f(x) = " + self.code
你可以像这样使用它:
>>> sq = MathFunction("x**2")
>>> sq
f(x) = x**2
>>> sq(7)
49
这当然有点受限制(仅使用名为" x"的变量,只有一个参数),但它当然可以扩展。