将函数作为参数传递给其他函数

时间:2017-10-04 16:05:32

标签: python

这是练习:

  

(a)该函数采用另一个函数f(n),其中n∈N作为参数   并返回行的限制。该函数使用epsilon作为   之前,但这次循环将结束时f之间的差异   (n)和f(n + 1)小于epsilon。

(这不是积分,只是为了锻炼)。

这是我的代码:

import sys
sys.setrecursionlimit(10000000)

epsilon = 0.0001
def limit(param):
    while param(1) >= epsilon:
        print(param)

    return -1


def f(n):
    return f(n / (n + 1))


limit(f)

我必须创建一个函数limit,它将其他函数作为参数。这些函数创建行:例如:

f(n) = n / (n + 1)
g(n) = n / (n + 2)
h(n) = n * 0.005

函数限制需要能够将所有这些函数作为参数,而不是检查该函数是否收敛于一个函数(使用epsilon完成)。

我知道如何测试特定行是否收敛到一个:

epsilon = 0.0001
def test(n):
    while abs(n / (n + 1) -1) >= epsilon:
        n += 1
        print(n, "/", n+1, " = ", n/(n+1))

    return True

test(1)

但我在第一段代码中遇到以下问题:

  • 如何传递函数(例如f(n))以限制并能够使用参数
  • 如何在函数限制中使用n作为f的参数
  • ...

欢迎任何帮助!

2 个答案:

答案 0 :(得分:1)

您可以将函数及其参数作为单独的参数传递,然后在函数内创建函数调用。

好的,这是一个令人困惑的陈述。 : - )

让我用代码示例澄清:

def function(parameter):
    print(f'I am function function with parameter {parameter}')

def call_me_with(func, param):
    func(param)

call_me_with(function, 5)

函数是Python中的对象,就像(几乎)其他任何东西一样。

希望这有帮助!

答案 1 :(得分:0)

例如,你可以通过将函数的名称作为参数传递并在函数内部调用它来使用所谓的依赖注入,就像你从中获取它一样 例如

def limit(param, function, n):
    while param(1) >= epsilon:
        print(param)
        result = function(n)
    return -1
相关问题