[英]Generate new function from old function with only one argument set
假設我有一個功能
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”需要多少個參數。 我仍然想創建一個與“ oldfunction”相同的新函數,但要設置第一個參數,而所有后續參數都保持打開狀態。
有沒有辦法做到這一點?
from functools import partial
new_function = partial( oldfunction, 10 )
下面的示例允許您將10綁定到oldfunction的第一個參數位置,然后在* args中提供其余兩個參數。 因此,請嘗試以下操作:
def newfunction(*args):
return oldfunction(10, *args)
這可能是一個功能性的解決方案,對於您的確切情況,您的代碼將如下所示:
from functools import partial
def newfunction(*args):
return oldfunction(10, *args)
newfunction(20, 30)
(10, 20, 30)
10是綁定到oldfunction的第一個參數,后跟* args。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.