**谁能告诉我我的问题有什么问题?我想我清楚地表达了我的问题,很多人似乎理解了我的问题。
我有一个功能可以应用于多种情况。例如,我有一个函数f包含另一个函数h,它可以根据情况应用不同的函数。
def f(n):
return n.cost + h(n)
并且h函数将在运行时之前被确定。
我知道我可以只使用f(n, h)
来传递不同的函数,但这会扰乱参数列表,我需要它只保留一个参数。
因此,我想知道是否有一种方法可以在Python中实现这样的功能:
def f<h>(n):
return n.cost + h(n)
在C++中:
template<int (*H)>
int f(Node n)
{
return n.cost + H(n);
}
谢谢你,谢谢!
2条答案
按热度按时间wljmcqd81#
可以使用装饰器函数
41ik7eoe2#
与C不同,C在运行前将函数编译成固定地址的机器码,Python中的所有函数都是在运行时创建的对象,因此在Python中没有“
h
函数将在 * 运行前被确定(sic)*”这样的事情。如果
h
在运行时初始化后不会更改,并且您希望f
的调用者使用一个参数调用它,则通常将h
作为f
的可选参数的默认值更符合Python的要求:该输出:
10
(2 * 3 + 3 + 1 == 10
)