有没有办法重置 python 部分参数,而不必重新定义部分函数本身?
例如,我希望能够重置下面的累加器:
accum = []
def accumulator(list, item):
list.append(item)
a = partial(accumulator, accum)
a(5)
a(7)
accum
按预期打印 [5, 7]。现在我想将列表重置为空,但在 a 上保持定义的行为:
accum = []
a(8)
accum
我希望 [8] 但这次,我得到一个空列表。有没有办法在外部范围内保持定义的函数和变量之间的联系?
请您参考如下方法:
partial 绑定(bind)对象,而不是变量; a 具有对 accum 引用的列表对象的引用,而不是对 accum 变量的引用。分配给 accum 只会重新绑定(bind) accum 引用,而不是 partial 对象中的引用。
虽然您可以清除列表对象:
accum.clear()
或 Python 3.3 之前:
del accum[:]
用 partial 绑定(bind)可变对象的整个设置看起来像是奇怪的别名和状态错误的秘诀。对于您要解决的任何潜在问题,我都建议采用不同的方法。
