假设我有一个功能
def oldfunction(arg1,arg2,arg3):
print(arg1,arg2,arg3)
我想创建一个新函数,我在其中将第一个参数设置为10.新函数行为将是:
>>> new_function(20,"30")
10 20 '30'
执行此操作的一种方法是使用lambda函数:
>>> newfunction = lambda arg2,arg3: function(10,arg2,arg3)
>>> newfunction("ten",[10])
(10, 'ten', [10])
但是,假设我事先并不知道“旧功能”有多少参数。我仍然想创建一个与“oldfunction”相同的新函数,但是第一个参数设置,所有后续参数都保持打开状态。
有办法做到这一点吗?
答案 0 :(得分:7)
from functools import partial
new_function = partial( oldfunction, 10 )
答案 1 :(得分:3)
以下示例允许您将10绑定到oldfunction中的第一个参数位置,然后在* args中提供剩余的两个参数。所以,试试这个:
def newfunction(*args):
return oldfunction(10, *args)
答案 2 :(得分:0)
这可以是一个功能性解决方案,您的代码看起来就像这样:
from functools import partial
def newfunction(*args):
return oldfunction(10, *args)
newfunction(20, 30)
(10, 20, 30)
10绑定为oldfunction的第一个参数,后跟* args。