C语言中有函数指针的概念,可以通过建立映射表来完成对应功能函数的调用,类似
类型1 : 函数指针1
类型2 : 函数指针2
...
类型n : 函数指针n
可以通过hashMap或者数组(每个元素存储函数指针)来调用不同类型对应的功能函数
python中也可以实现类似的功能,同样的,可以根据不同类型选择调用对应的功能函数
这里映射表功能的实现基于这样一个事实:函数名是指针常量,可以赋值给指针,也可以赋值给常引用,进而也可以作为函数参数
赋值与调用
def f1(x):
print('f1:'+x)
def f2(x):
print('f2:'+x)
func_dict = {}
func_dict[1] = f1
func_dict[2] = f2
func_dict[1]('hello') # 调用,输出f1 : hello
func_dict[2]('world') # 调用,输出f2 : world
作为函数参数
def minus(a, b):
return a - b
def compute(a, b, fun):
result = fun(a, b) # 函数调用
print(result)
if __name__ == "__main__":
fun = minus # 函数指针赋值
compute(1, 1, fun) # 函数指针作为参数
建立映射表实例
tag_functions = {
"TURN_LEFT" : TAG_TURN_LEFT_FUNCTION,
"TURN_RIGHT" : TAG_TURN_RIGHT_FUNCTION,
"U_TURN" : TAG_U_TURN_FUNCTION,
"STRAIGHT" : TAG_STRAIGHT_FUNCTION
}
def TAG_TURN_LEFT_FUNCTION(id, frames):
xxx
def TAG_TURN_RIGHT_FUNCTION(id, frames):
xxx
def TAG_FUNCTION(ids, frames):
for id in ids:
scenario = get_scenario(id, frames)
tag_function[scenario](id, frames) # 根据不同场景调用对应打标函数
【参考文章】
python使用函数指针赋值
python实现类似函数指针功能
python函数指针作为参数
created by shuaixio, 2023.10.05