2017-10-04 237 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'可以是任何對象。你可以有可調用的類,等等。 –

相關問題