将函数参数设置为函数工具.parti

2024-05-18 11:06:18 发布

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

我想使用functools.partial将某个参数设置为常量,同时将该参数全部删除。在

让我用一个简单的例子来解释。在

from functools import partial
def f(a, b):
    return a * b

g = partial(f, b=2)

但是,此函数g仍然具有以下调用签名:

^{pr2}$

我当然可以用一个lambda函数来做这个,比如:

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

g = lambda a: f(a, b=2)

具有正确的主叫签名:

g?

Signature: g(a)
Docstring: <no docstring>
File:      ~/Work/<ipython-input-7-fc5f3f492590>
Type:      function

使用lamdba函数的缺点是我需要再次写下所有参数。在我的简单示例中,这无关紧要,但请看以下内容:

phase_func = lambda site1, site2, B_x, B_y, B_z, orbital, e, hbar: \
    phase_func(site1, site2, B_x, B_y, B_z, orbital, e, hbar, xyz_offset=(0,0,0))
# or this
phase_func = partial(phase_func, xyz_offset=(0,0,0)

我为什么还要这个?在

在后面的代码中,我使用包装器,它可以通过乘以其他两个函数来生成一个新函数,比如combine(function1, function2, operator.mul)。这个combine函数查看所有参数,因此我需要在设置参数后删除它。在


Tags: lambda函数参数returndefpartialoffsetfunc