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

How to pass an argument through a function which call other functions?

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

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)中? 初学者在这里。提前致谢。

你的意思是在参数中加上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)

您可以使用 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