如何将一个包含一些(但不是全部)参数的函数传递给另一个函数?

2024-09-29 05:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个函数f(x,a,b):

def f(x, a, b):
    return a*x + b

我必须将此函数传递给另一个预先设置了“a”和“b”的函数,例如:

^{pr2}$

我知道有其他方法可以解决这个特殊的问题,但是这只是一个例子,不是真正的问题,我想知道是否有什么方法可以像这样“print2(f(,1,1))”。换言之,有没有什么方法可以做到这一点,而不必把争论贯穿始终?就像

def print3(f, a, b):
    x = np.linspace(0, 1, 10)
    print(f(x, a, b))
print3(f, a, b)

Tags: 方法函数returndefnp例子printlinspace
3条回答

lambda和{}都是创建新函数的奇特方法。你也可以自己写:

def f2(x):
    return f(x, 1, 1)

lambda和{}的特殊之处在于它们是表达式,可以作为参数直接传递给高阶函数。在

您可以使用functools.partial来实现这一点!在

def print2(f):
    x = np.linspace(0,1,10)
    print(f(x))
f2 = functools.partial(f, a=1, b=2)
print2(f2)

关于使用partial可以获得的许多好处,请参见this。在

简而言之:

还有更多。。。在

您可以将其包装在另一个函数中:

g = lambda x: f(x, 1, 1)

print2(g)

使外部函数的参数成为仍然需要提供的任何数据,并传递该数据。在


有人告诉我,这种方法在Python中并不理想。@巴雷尔的回答可能更为恰当。在

相关问题 更多 >