如何在python中定义一个函数,将函数及其参数作为输入并应用于它。

2024-09-26 22:52:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想定义一个函数,将参数作为一个数学函数,它的参数和迭代次数(我用不动点定理寻找函数的零点)。 我知道如何寻找零,但我不知道如何让我的数学方程从函数本身获取参数。你知道吗

def f(function,x,iterations)

当我尝试调用函数时,例如:

f(x**2+3,-1,20)

这个函数是为x(我已经为另一段代码定义了)而不是我在这里寻找的x=-1获取已经存在的变量。 我要找的结果是+4

我怎样才能解决这个问题?我试图在我的函数中定义另一个函数,但我被明确要求为我的函数提供这三个参数。你知道吗

谢谢你的帮助。你知道吗


Tags: 函数代码参数定义deffunction数学次数
3条回答

在python中,函数本身是第一类对象,可以作为参数传递。可以在外部定义基函数。你知道吗

def my_f(x):
    return x**2+3

def my_functor(f, x, iterations):
    for i in xrange(iterations):
        x = f(x)
    return x

print my_functor(my_f, -1, 20)

也许您可以找到一种更为隐式的方法,通过使用修饰符来定义同一个函子。你知道吗

def iterated(fn):
    """
    A decorator to make a function iterate over its outputs.
    """
    def iterated_func(*args, **kwargs):
        x = args[0]
        iterations = args[1]
        for i in xrange(iterations):
            x = fn(x)
        return x
    return iterated_func

@iterated
def my_g(x):
    return x**2+3

在这种情况下,my_g(3,1)==my_f(3)将计算为True。也就是说,通过在您定义的函数上添加decorator @iterated,您可以更改它的行为以获得作为参数的迭代次数。你知道吗

可以使用sympy安全地计算数学表达式。你知道吗

首先,安装sympy

pip install sympy

然后,你可以这样起诉:

import sympy as sy

def mathfunc(formula, **kwargs):
    expr = sy.sympify(formula)
    return expr.evalf(subs=kwargs)


mathfunc(formula="x**2+3", x=-1, iterations=20)

您可以将其转换为int,如下所示:

>>> int(myformula(formula="x**2+3", x=-1, iterations=20))
4

或者在mathfuncreturn语句中添加int()。你知道吗

请注意,我没有使用iterations,因为您没有提到希望使用它做什么,但是您可以在mathfunc中使用它。你知道吗

将函数存储到一个字符串中,以便使用“x**2”,然后在函数内部使用eval方法来使用函数。评估()

相关问题 更多 >

    热门问题