Skip to main content
 首页 » 编程设计

python:重置部分函数参数

2025年05月04日13tuyile006

有没有办法重置 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)可变对象的整个设置看起来像是奇怪的别名和状态错误的秘诀。对于您要解决的任何潜在问题,我都建议采用不同的方法。