Python: 如何调用以另一个函数作为参数的函数?
Python: How can I call a function that has another function as argument?
我有:
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: unsupported operand type(s) for ** or pow(): 'function' and '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)
注意:c_bar.
中未定义delta
只需调用:
c_bar(alpha, delta, k_bar(alpha, beta, delta))
这样就可以将k_bar
的返回值传递给c_bar
我有:
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: unsupported operand type(s) for ** or pow(): 'function' and '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)
注意:c_bar.
中未定义delta只需调用:
c_bar(alpha, delta, k_bar(alpha, beta, delta))
这样就可以将k_bar
的返回值传递给c_bar