2017-10-04 243 views
0

这是锻炼:传递函数作为参数传递给其他功能

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

(这不适用于积分,只适用于运动)。

这是我的代码:

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这需要其它功能参数。这些功能创建行:e.g:

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

的功能限制需要能够把所有这些功能作为参数,而不是检查是否该函数逼近一个(与小量完成)。

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

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
  • ...

任何帮助一般会受到欢迎!

回答

0

你可以例如使用什么用只是作为一个参数传递您的函数的名称,把它自己的函数中,就像您拥有了它 例如被称作依赖注入

def limit(param, function, n): 
    while param(1) >= epsilon: 
     print(param) 
     result = function(n) 
    return -1 
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

事实上,只要func的类型有'__call__'方法,'func'可以是任何对象。你可以有可调用的类,等等。 –

相关问题