如何在Python中将函数作为函数参数传递
问题内容:
这是我目前拥有的,并且工作正常:
def iterate(seed, num):
x = seed
orbit = [x]
for i in range(num):
x = 2 * x * (1 - x)
orbit.append(x)
return orbit
现在,如果我想将第5行的迭代方程式更改为x = x **
2-3,则必须使用第5行以外的所有相同代码创建一个新函数。如何创建更通用的函数能以函数为参数的函数?
问题答案:
函数是Python中的一等公民。您可以将函数作为参数传递:
def iterate(seed, num, fct):
# ^^^
x = seed
orbit = [x]
for i in range(num):
x = fct(x)
# ^^^
orbit.append(x)
return orbit
在代码中,您将传递所需的函数作为第三个参数:
def f(x):
return 2*x*(1-x)
iterate(seed, num, f)
# ^
要么
def g(x):
return 3*x*(2-x)
iterate(seed, num, g)
# ^
要么 …
如果您不想每次都命名一个新函数,则可以选择传递一个匿名函数(即 lambda ):
iterate(seed, num, lambda x: 3*x*(4-x))