【问题标题】:function with parameter that is a mathematical func参数为数学函数的函数
【发布时间】:2017-05-30 01:08:08
【问题描述】:

我想在 Python 中有这样的函数:

class EvaluationStrategy(object):
    def __init__(self, test_function):

    self.test_function = test_function

class TestFunction(object):
    def objective_function(self, design_variable1, design_variable2):
        print("external function called")
        intermediate_results = self.__internal_function_evaluation_()

        v1= intermediate_results(0)
        v2= intermediate_results(2)

        v=test_function

在调用包含 EvaluationStrategy 的函数后,应该根据 x 定义 testfunction,例如 x^2 或类似的东西。但是如果没有定义 x,Python 总是会抛出一个错误,所以我用 lambda 尝试了它,但是如果没有定义 x,它也不起作用。 如果有人可以请帮助我。在此先感谢。

【问题讨论】:

  • 您能否添加一个实际的具体示例来说明您如何称呼它,以及您期望得到什么结果?
  • 我调用了EvaluationStrategy 的子函数,并且必须插入一个函数... >>Evaluate(x**2) 然后Evaluate 函数在循环内分配x 的新值并计算x^2每个值类似于 >>2 --> x^2 = 4 >>4 --> x^2 = 16
  • 对不起,我看不到这一切之间的联系。 Evaluate?我在您的代码示例中没有看到该函数。您从哪里获得 x 值,例如 2?它是在某些方法调用中给出的吗?您能否提供一个您希望能够执行的确切脚本并为此提供所需的输出?这将有助于确定您正在寻找哪种实现。

标签: python-3.x function mathematical-optimization mathematical-expressions


【解决方案1】:

不清楚您在问什么(请参阅我的 cmets),但您需要的要素之一似乎是如何将函数作为参数传递并存储该函数以供以后执行。

你可以这样做:

class EvaluationStrategy:
    def __init__(self, test_function):
        self.test_function = test_function

    def evaluate(self, arg):
        return self.test_function(arg)

ev = EvaluationStrategy(lambda x: x**2)

for i in range(2,5):
    print(i, ev.evaluate(i))

【讨论】:

  • 谢谢!这是我搜索的那个,从未尝试将 lambda 的东西放入我的输入中。------------------------ 你能帮我解决另一个问题吗? ? -------------------------- 我需要了解为什么 while 循环会创建数组数组的数组……等等。-- ------------------- 每次下一轮开始旧参数更改为新参数时(如预期),但现在显示为一个数组(下一轮循环:array[ array[xy]] ) ------------------- 这与错误是否有共同点:对象数组可能自我参照
  • while 循环本身不需要与列表有任何关系,尽管它可以。此外,如果您确实将它与列表一起使用,它不会强制您描述的行为。我建议您发布一个关于此的新问题,并包含不符合您要求的代码。如果你发帖时我不在,周围会有很多人帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多