有没有办法重置 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)可变对象的整个设置看起来像是奇怪的别名和状态错误的秘诀。对于您要解决的任何潜在问题,我都建议采用不同的方法。
关于python:重置部分函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45926976/