传递函数作为参数传递给其他功能
问题描述:
这是锻炼:传递函数作为参数传递给其他功能
的(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
- ...
任何帮助一般会受到欢迎!
答
你可以例如使用什么用只是作为一个参数传递您的函数的名称,把它自己的函数中,就像您拥有了它 例如被称作依赖注入
def limit(param, function, n):
while param(1) >= epsilon:
print(param)
result = function(n)
return -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对象,就像(几乎)任何东西。
希望这会有所帮助!
事实上,只要func的类型有'__call__'方法,'func'可以是任何对象。你可以有可调用的类,等等。 –