簡體   English   中英

將函數作為參數傳遞給其他函數

[英]Passing function as parameter to other function

這是練習:

(a)該函數以n∈N作為參數的另一個函數f(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的參數
  • ...

一般的任何幫助都將受到歡迎!!!

您可以將函數及其參數作為單獨的參數傳遞,然后在函數內部創建函數調用。

好的,這是一個令人困惑的聲明。 :-)

讓我用一個代碼示例進行說明:

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中的對象,就像(幾乎)其他所有對象一樣。

希望這可以幫助!

例如,您可以通過僅將函數名稱作為參數傳遞並在函數內部進行調用來使用所謂的依賴注入,例如,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM