从函数中设置(和移除)关键字参数

2024-03-29 09:38:48 发布

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

我的函数如下:
def foo(a, b, c): return a+b+c

现在我想把b改为2并创建签名:
def bar(a, c): return foo(a, 2, c)

另一种选择是使用lambda函数:
bar = lambda a, *args: foo(a,2,*args)

但是这也不是很好,因为我必须知道在b之前有多少个参数

functools.partial部分解决了这个问题:
bar = partial(foo, b=2)

但是,它有一个签名bar(a, b=2, c),而不是bar(a,c)

有更好的解决办法吗?你知道吗

背景:目前,我尝试使用scipy.优化.最小化. 我要修复的一些参数(在装配过程中不更改)。你知道吗


Tags: lambda函数参数returnfoo过程defbar
1条回答
网友
1楼 · 发布于 2024-03-29 09:38:48

如果符合您的需要,请考虑嵌套函数。 关于嵌套/修饰函数的一个很好的blog post

>>> def outer(a, c):
...     def inner(b=2):
...             return a+b+c
...     return inner
... 
>>> dec = outer(3,5)
>>> print dec()
10

相关问题 更多 >