如何通过调用其他函数的函数传递参数?



我的问题的简单版本如下:

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)

function_1(5, function_2)
function_1(3, function_3)

我的问题是,当调用function_1,我怎么能给它一个参数将被添加到被调用的函数(function_2或function_3)也作为一个参数?初学者在这里。提前谢谢。

您可以使用functools.partial:

from functools import partial
...
function_1(5, partial(function_2, 5))
function_1(3, partial(function_3, 2, 3))

partial允许您向function_1传递一个对象,该对象可以在不传递参数的情况下调用。

正如Kacper所建议的,Python提供了使用任意位置参数列表(args)和关键字参数字典(kwargs)的可能性:

def fun_x(x, a_callable, *args, **kwargs):
print(x, a_callable, args, kwargs)
a_callable(*args, **kwargs)
def fun_y(a,b,kwarg1):
print(a,b,kwarg1)
fun_x(3,fun_y, "first", "second", kwarg1="third")
3 <function fun_y at 0x000001D1E0E02378> ('first', 'second') {'kwarg1': 'third'}
first second third

您的意思是将x添加到参数中?

def function_1(x, function):
print(x)
function(x)
...

如果您想使用相同的参数xfunction_1作为被调用函数的参数,你可以使用:

def function_1(x, function): print(x) function(x)

或者您想使用另一个参数y对于内部调用的函数,你可以像下面这样使用:

def function_1(x,y,function): print(x) function(y)

最新更新