Python 函数作为参数的传递函数
我知道如何将一个简单函数作为参数传递给另一个函数,但如何传递“嵌套”函数呢?我正在尝试这样做:Python 函数作为参数的传递函数,python,python-3.x,Python,Python 3.x,我知道如何将一个简单函数作为参数传递给另一个函数,但如何传递“嵌套”函数呢?我正在尝试这样做: def do(func): print (func(6)) def a(x): return x*2 def b(x): return x*3 do(a(b)) 这里的主要问题是do(a(b))将通过a中的函数b,并导致类型错误 这里的主要问题是,无论传递给函数do的是什么,都必须是可调用的,否则print(func(6))语句将由于适当的原因而失败(缺少\u call
def do(func):
print (func(6))
def a(x):
return x*2
def b(x):
return x*3
do(a(b))
这里的主要问题是
do(a(b))
将通过a
中的函数b
,并导致类型错误
这里的主要问题是,无论传递给函数do
的是什么,都必须是可调用的,否则print(func(6))
语句将由于适当的原因而失败(缺少\u call\u
方法),因此我认为这种结构方式不适合您尝试执行的操作
作为一个解决方案,您可以执行“门把手建议”(基本上在可调用中传递),或者考虑函数“<代码> >代码< >代码> >函数>代码> > do>代码> >。p>
因此,如果将函数
a
更改为:
def do(func):
print (func(6))
def a(x):
x = x * 2
def b(y):
return x * (y * 3)
return b
do(a(2))
您将获得一个很好的72
结果。尽管我不确定这是否严格意义上是“嵌套”函数。这里的主要问题是do(a(b))
将通过a
中的函数b
,并导致类型错误
这里的主要问题是,无论传递给函数do
的是什么,都必须是可调用的,否则print(func(6))
语句将由于适当的原因而失败(缺少\u call\u
方法),因此我认为这种结构方式不适合您尝试执行的操作
作为一个解决方案,您可以执行“门把手建议”(基本上在可调用中传递),或者考虑函数“<代码> >代码< >代码> >函数>代码> > do>代码> >。p>
因此,如果将函数
a
更改为:
def do(func):
print (func(6))
def a(x):
x = x * 2
def b(y):
return x * (y * 3)
return b
do(a(2))
您将获得一个很好的72
结果。尽管我不确定这是否严格意义上就是您所说的“嵌套”函数。使用函数组合方法:
def compose(f, g):
return lambda x: f(g(x))
def do(func):
print (func(6))
def a(x):
return x*2
def b(x):
return x*3
combinedAB = compose(a,b)
do(combinedAB)
使用功能组合方法:
def compose(f, g):
return lambda x: f(g(x))
def do(func):
print (func(6))
def a(x):
return x*2
def b(x):
return x*3
combinedAB = compose(a,b)
do(combinedAB)
do(lambda x:a(b(x)))
您正在寻找。do(lambda x:a(b(x)))
您正在寻找。