You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更简洁地重新赋值Python函数默认可变参数中的字典?

更简洁的字典重新赋值方法

首先回顾问题中的示例代码:

列表示例

def myfunc(l=[]):
    if not l:
        l[:] = otherlist

这段代码通过切片赋值,将列表l替换为otherlist的内容,同时利用Python默认可变参数的特性(首次调用时初始化,修改后状态会在多次调用间保留),让l的状态持续保留。

字典示例

原代码通过清空字典后循环赋值的方式更新:

def myfunc(d={}):
    d.clear()
    for k, v in otherd.items():
        d[k] = v

更简洁的实现方式

要实现修改原字典对象(保证多次调用时状态保留)的前提下,更简洁的写法是使用字典的update方法:

def myfunc(d={}):
    d.clear()
    d.update(otherd)

甚至可以写成一行:

def myfunc(d={}):
    d.clear(); d.update(otherd)

注意事项

不要直接使用d = otherd.copy()或者d = dict(otherd),因为这会将d重新绑定到一个新的字典对象,而不是修改原本的默认字典参数。这样做会导致后续函数调用时,默认参数还是最初的空字典,无法保留之前修改的状态——这违背了示例中利用默认可变参数保留状态的需求。

注:默认可变值是在函数首次调用时初始化并存储的值,修改后会在多次函数调用中保持状态,访问时返回最新状态而非初始状态。

内容的提问来源于stack exchange,提问作者Ethan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:57:03