是否可以直接从函数实现输出数学函数?
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
Run Code Online (Sandbox Code Playgroud)
当然,使用表示作为参数来构造对象是可能的,并且是一个简单的解决方案.但想法是生成这种表示.我也可以使用表示数学运算的对象来构建函数,但我们的想法是在常规(lambda)函数上进行.
我真的没有办法让这种情况发生,但我很好奇.感谢您的任何帮助和建议
正如我所说,如果你想让它变得更复杂,你可以使用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
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:
>>> sq = MathFunction("x**2")
>>> sq
f(x) = x**2
>>> sq(7)
49
Run Code Online (Sandbox Code Playgroud)
当然,这有点受限制(仅使用名为"x"的变量,只有一个参数),但它当然可以扩展.
| 归档时间: |
|
| 查看次数: |
490 次 |
| 最近记录: |