Python主函数调用子函数时如何沿用子函数默认参数且不硬编码?
如何在主函数中自动使用子函数的默认参数(无需硬编码)
你可以通过给主函数的参数设置None作为默认值,再在函数内部收集需要传递给子函数的有效参数,最后用字典解包的方式调用子函数,这样就能自动复用子函数自身的默认值,且不需要硬编码这些默认值。
修改后的实现代码
def func(x=1, y=2): z = x + y return z def func2(a=3, b=4): c = a - b return c def finalFunc(lemons, input1=None, input2=None, input3=None, input4=None): # 收集要传给func的参数:仅保留非None的传入值 func_params = {} if input1 is not None: func_params["x"] = input1 if input2 is not None: func_params["y"] = input2 # 收集要传给func2的参数:仅保留非None的传入值 func2_params = {} if input3 is not None: func2_params["a"] = input3 if input4 is not None: func2_params["b"] = input4 # 用字典解包调用子函数,未传入的参数自动使用子函数默认值 result = func(**func_params) + func2(**func2_params) + lemons return result
测试验证
调用
finalFunc(lemons=1):>>> finalFunc(lemons=1) 3计算逻辑:
func(1,2) + func2(3,4) +1 = 3 + (-1) +1 =3,符合预期。调用
finalFunc(lemons=1, input1=4, input4=6):>>> finalFunc(lemons=1, input1=4, input4=6) 4计算逻辑:
func(4,2) + func2(3,6) +1 =6 + (-3) +1=4,符合预期。
优势说明
- 无需硬编码子函数的默认值,后续修改
func或func2的默认参数时,主函数finalFunc完全不需要改动。 - 逻辑清晰,仅传递用户明确指定的参数,其余参数自动复用子函数的默认配置。
内容的提问来源于stack exchange,提问作者Vik
相关产品推荐
相关产品推荐

