Python中如何通过调用其他函数的函数向被调函数传递参数
解决方法
以下是两种常用的实现方案:
- 方案1:修改
function_1定义,支持传入子函数参数
你可以给function_1增加可变位置参数*args和可变关键字参数**kwargs,用来接收所有要传给内部调用函数的参数,调用时直接透传即可。
修改后的完整示例代码如下:
def function_1(x, function, *args, **kwargs): print(x) # 透传参数给传入的函数 function(*args, **kwargs) def function_2(y): print(2*y) def function_3(z, n): print(3*z) print(5 * n) # 给function_2传入参数y=10 function_1(5, function_2, 10) print("----------") # 给function_3传入参数z=2、n=4 function_1(3, function_3, 2, 4)
运行后输出结果为:
5 20 ---------- 3 6 20
该方案适合你有权限修改function_1源码的场景,灵活性最高,支持传入任意参数的子函数。
- 方案2:无需修改原有代码,用
lambda匿名函数绑定参数
如果你不能修改function_1的原有定义,可以直接在调用时用匿名函数把要传入的参数和子函数提前绑定,再传给function_1:
# 原有未修改的function_1 def function_1(x, function): print(x) function() def function_2(y): print(2*y) def function_3(z, n): print(3*z) print(5 * n) # 用lambda绑定function_2需要的参数y=10 function_1(5, lambda: function_2(10)) print("----------") # 用lambda绑定function_3需要的参数z=2、n=4 function_1(3, lambda: function_3(2, 4))
运行结果和方案1完全一致,该方案适合无法修改上层函数定义的场景,调用更灵活。
内容的提问来源于stack exchange,提问作者Reed
相关产品推荐
相关产品推荐

