我的问题的简单版本如下:
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)
...
如果您想使用相同的参数x到function_1作为被调用函数的参数,你可以使用:
def function_1(x, function):
print(x)
function(x)
或者您想使用另一个参数y对于内部调用的函数,你可以像下面这样使用:
def function_1(x,y,function):
print(x)
function(y)