仅使用一个参数集从旧函数生成新函数

aba*_*ter 1 python lambda arguments function

假设我有一个功能

def oldfunction(arg1,arg2,arg3):
    print(arg1,arg2,arg3)
Run Code Online (Sandbox Code Playgroud)

我想创建一个新函数,我将第一个参数设置为10.新的函数行为将是:

>>> new_function(20,"30")
10 20 '30'
Run Code Online (Sandbox Code Playgroud)

一种方法是使用lambda函数:

>>> newfunction = lambda arg2,arg3: function(10,arg2,arg3)
>>> newfunction("ten",[10])
(10, 'ten', [10])
Run Code Online (Sandbox Code Playgroud)

但是,假设我事先并不知道"旧功能"有多少参数.我仍然想创建一个与"oldfunction"相同的新函数,但是第一个参数设置,并且所有后续参数都保持打开状态.

有没有办法做到这一点?

lnm*_*nmx 7

试试functools.partial:

from functools import partial

new_function = partial( oldfunction, 10 )
Run Code Online (Sandbox Code Playgroud)