有趣的是这是很有可能的。几天前我做了一个项目来做那样的事情。在
现在您只能定义变量,但是您可以使用我的元类,在其他函数的帮助下构建一个您想要的类。在
问题:太慢了
真的很慢
你认为你想要这样做,但是用你想要的方式描述函数才是正确的。在
你应该使用你的第一个代码。在
作为一个概念的证明:from funcbuilder import OperatorMachinery
class FuncOperations(metaclass=OperatorMachinery):
def __init__(self, function):
self.func = function
def __call__(self, *args, **kwargs):
return self.func(*args, **kwargs)
def func(self, *n, oper=None):
if not n:
return type(self)(lambda x: oper(self.func(x)))
return type(self)(lambda x: oper(self.func(x), n[0](x)))
FuncOperations.apply_operators([func, func])
现在您可以这样编写代码:
^{pr2}$
理想的行为是:>>> z = f * g
>>> z(3)
20
我在FuncBuilder项目中添加了一个更好的版本。它可以处理FuncOperation对象和另一个可调用对象之间的任何操作。也适用于一元操作。:天
您可以使用它来实现以下功能:z = -f + g * h