我有:
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'并且'浮动'"
但是,我希望得到结果,并将函数作为参数在这种特定情况下工作。
我希望某人。可以帮助我!
干杯,托比亚斯
答案 0 :(得分:4)
我怀疑你真正想要做的是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
将引用函数参数。
答案 1 :(得分:2)
我认为你对什么是功能有一些问题。
根据你的意见,你想做:
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)
注意:未在c_bar中定义delta。
答案 2 :(得分:1)
请致电:
c_bar(alpha, delta, k_bar(alpha, beta, delta))
这样您就可以将k_bar
的返回值传递给c_bar