functools.partialのドキュメントには、「ほぼ同等」と記載されています。
def partial(func, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
return func(*(args + fargs), **newkeywords) # line to change
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
追加の引数を付加するバージョンを実装したい場合は、示された行を変更するだけでよいようです。
このコードをコピーするだけで心配すべき他の機能/落とし穴はありますか?