Python如何通过变量指定待调用函数 实现一处配置多处调用
报错原因
你写的FUNCTION = func1()会直接执行func1函数,但调用时没传它要求的必填参数x,自然会报参数缺失错误。你这里需要的是把函数本身赋值给配置变量,而不是拿到函数执行后的返回值。
Python里函数是一等对象,可以直接作为值赋值给变量,只要赋值的时候不在函数名后面加调用的圆括号()就行。这样后续所有调用FUNCTION的地方都会自动用你配置的目标函数,只需要改一处配置,不用动后面的业务代码。
正确写法
基础实现
def func1(x): return x def func2(x): return x**2 def func3(x): return x+x # ============== 唯一配置区,换函数只改这里 ============== FUNCTION = func1 # 要换func2/func3直接改赋值即可,不要加括号 # ====================================================== x = [1, 2, 3, 4, 5] # 注意:你定义的三个函数都是处理单个数值的,操作列表需要遍历每个元素计算 y = [FUNCTION(i) + 1 for i in x] z = [FUNCTION(i) + 2 for i in x] m = [FUNCTION(i) + 3 for i in x]
如果你的业务场景里x是单个数值而非列表,直接按原逻辑调用即可,不需要列表推导:
x = 5 y = FUNCTION(x) + 1 z = FUNCTION(x) + 2 m = FUNCTION(x) + 3
扩展:多函数配置映射
如果后续可选函数增多,可以用字典做映射关系,还是只需要改一处配置值就能切换:
# 维护所有可选函数的映射表 function_registry = { "origin": func1, "square": func2, "double": func3 } # 唯一配置项,修改字符串即可切换对应函数 USE_FUNC = "square" FUNCTION = function_registry[USE_FUNC]
内容的提问来源于stack exchange,提问作者Denver Dang
相关产品推荐
相关产品推荐

