Python:如何调用具有另一个函数作为参数的函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:如何调用具有另一个函数作为参数的函数?相关的知识,希望对你有一定的参考价值。

我有:

beta  = 0.95
alpha = 0.3
delta = 0.1

def k_bar(alpha, beta, delta):
    return ((1 / beta - 1 + delta) / alpha) ** (1 / (alpha - 1))
def c_bar(alpha, delta, k_bar):
    return k_bar ** alpha  - delta * k_bar

我打电话的时候

k_bar(alpha, beta, delta)

我得到“2.63”。但是当我打电话的时候

c_bar(alpha, delta, k_bar) 

我得到“TypeError:不支持的操作数类型为**或pow():'function'和'float'”

但是我希望得到结果,并使函数作为参数在这种特定情况下工作。

我希望某人可以帮我!

干杯,托比亚斯

答案

我怀疑你真正想做的是让c_bar调用k_bar,像这样:

def k_bar(alpha, beta, delta):
    return ((1 / beta - 1 + delta) / alpha) ** (1 / (alpha - 1))

def c_bar(alpha, beta, delta):
    k = k_bar(alpha, beta, delta)
    return k ** alpha  - delta * k

您可以像调用k_bar一样调用它:

c = c_bar(alpha, beta, delta)

此调用将自动为您调用k_bar


正如ACascarino正确指出的那样,你应该注意到你定义为函数参数的alpha, beta, delta与你在顶部定义的全局变量不同。在函数内部,alpha将引用函数参数。

另一答案

我认为你对什么是功能有一些问题。

根据你的意见,你想做:

 k_bar = ((1 / beta - 1 + delta) / alpha) ** (1 / (alpha - 1))

这不是一个功能。

[初学者的一个简单技巧,从不对两个不同的东西使用相同的变量名称(如tour alpha,k_bar)。我让你更难找到错误:你期望在一个地方,但它在另一个地方]。

如果你发一个函数作为参数,很好,但它仍然是一个函数,所以它需要参数:

def c_bar(alpha, delta, k_bar):
    return k_bar(alpha, beta, delta) ** alpha  - delta * k_bar(alpha, beta, delta)

注意:delta未在c_bar中定义。

另一答案

只需致电:

c_bar(alpha, delta, k_bar(alpha, beta, delta))

这样您就可以将k_bar的返回值传递给c_bar

以上是关于Python:如何调用具有另一个函数作为参数的函数?的主要内容,如果未能解决你的问题,请参考以下文章

Python中将函数作为另一个函数的参数传入并调用

python如何将可选参数或关键字参数从一个函数传递到另一个函数?

python使用函数作为参数

python---函数的进阶

Python回调函数用法实例

Python函数作为函数参数?