gpt4 book ai didi

python - 实现前置附加参数的 functools.partial

转载 作者:太空狗 更新时间:2023-10-29 21:03:46 25 4
gpt4 key购买 nike

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

如果我想实现一个前置附加参数的版本,看来我只需要更改指示的行。

在复制这段代码时,是否还有其他任何我应该担心的功能/陷阱?

最佳答案

查看 _functoolsmodule.c 的源代码,我认为没有什么可担心的。

partial 的模块实现处理了 picklingrepr,但其他一切看起来都像文档中那样工作,所以大概是它的原因用C实现只是为了效率。还有一个事实是它是一种类型而不仅仅是一个函数闭包。

但是请注意,在文档示例中,funcargskeywords 纯粹是装饰性的;也就是说,它们不能像实际的 functools.partial 实例那样被覆盖。一种替代方法是子类化 functools.partial:

class rpartial(partial):
def __call__(self, *args, **kwargs):
kw = self.keywords.copy()
kw.update(kwargs)
return self.func(*(args + self.args), **kw)

关于python - 实现前置附加参数的 functools.partial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11831070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com