python - 如何在 Python 中将函数作为函数参数传递

标签 python function math

这是我目前拥有的并且工作正常:

def iterate(seed, num):
    x = seed
    orbit = [x]
    for i in range(num):
        x = 2 * x * (1 - x)
        orbit.append(x)
    return orbit

现在,如果我想将第 5 行的迭代方程更改为 x = x ** 2 - 3,我将不得不使用除第 5 行之外的所有相同代码创建一个新函数。我如何创建可以将函数作为参数的更通用的函数?

最佳答案

函数是 first-class citizens在 Python 中。您可以将函数作为参数传递:

def iterate(seed, num, fct):
#                      ^^^
    x = seed
    orbit = [x]
    for i in range(num):
        x = fct(x)
        #   ^^^
        orbit.append(x)
    return orbit

在您的代码中,您将传递所需的函数作为第三个参数:

def f(x):
    return 2*x*(1-x)

iterate(seed, num, f)
#                  ^

或者

def g(x):
    return 3*x*(2-x)

iterate(seed, num, g)
#                  ^

或者……


如果您不想每次都命名一个新函数,您可以选择传递一个匿名函数(即:lambda):

iterate(seed, num, lambda x: 3*x*(4-x))

关于python - 如何在 Python 中将函数作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28795981/

相关文章:

c++ - 使用 C++ 将多个值插入 mysql 数据库表时出现问题

java - 如何计算以字符串形式给出的数学表达式?

python - Scipy/Pylab 错误.. 预计在 : dynamic lookup?

c++ - 在 C++ 中强制执行函数参数的类型

arrays - 连接两个数组的 XSLT

python - 有没有办法遍历模块的所有功能?

java - 如何将角度转换为 vector

python - Django Fixture Loading 使用什么 JSON 解析器

python - Python 2.7 列表中的俄语

python - 如何从python中的json编写grafana简单的json到表查询