python:重置部分函数参数

标签 python

有没有办法重置 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/

相关文章:

python - 设置缺少元素的字符串格式 - Python

python - ReportLab - 无法屏蔽图像 [Google App Engine]

python - 从类变量引用静态方法

python - http ://shell. appspot.com/执行代码如何在线?

python - 选择具有相等或更大值的第一个现有行

python - sip 安装成功后安装 PyQt(用于 pyuic4) : error: PyQt-x11-gpl-4. 11 安装

python - 如何避免 flake 8's "F821 undefined name '_' “when _ has been installed by gettext?

python - 谷歌应用程序引擎网络应用程序WSGI应用程序中的正则表达式匹配

python - 如何从 GUI 停止 QThread

python - python sqlite3 是否在交互模式下释放仅内存数据库?