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

如何让Lambda函数返回对象而非对象最后调用方法的None值?

解决Lambda返回对象而非None的技巧

针对你遇到的问题——因对象方法(比如字典的update())返回None,导致Lambda最终返回None而非目标对象,这里有几种实用技巧:

方法1:利用字典解包直接生成新字典

字典解包可以直接合并两个字典并生成新副本,无需调用返回None的update()方法,代码简洁高效:

dict_update = lambda d, upd: {**d, **upd}

d = dict(lw=3, ls='-')
upd = dict(c='C0', lw=4)
d1 = dict_update(d, upd)
for v in [d, upd, d1]: print(v)

输出结果:

{'lw': 3, 'ls': '-'}
{'c': 'C0', 'lw': 4}
{'lw': 4, 'ls': '-', 'c': 'C0'}

方法2:使用海象运算符(Python 3.8+)先赋值再返回

通过海象运算符先创建字典副本,执行更新操作后直接返回副本对象:

dict_update = lambda d, upd: (x := d.copy()).update(upd) or x

d = dict(lw=3, ls='-')
upd = dict(c='C0', lw=4)
d1 = dict_update(d, upd)
for v in [d, upd, d1]: print(v)

原理:update()返回None,None or x会返回x,以此拿到更新后的副本。

方法3:元组表达式执行操作后取对象

在元组里按顺序执行更新操作,最后提取目标对象,利用元组的求值顺序特性:

dict_update = lambda d, upd: (x := d.copy(), x.update(upd), x)[2]

d = dict(lw=3, ls='-')
upd = dict(c='C0', lw=4)
d1 = dict_update(d, upd)
for v in [d, upd, d1]: print(v)

元组会依次执行前两个表达式,最后返回第三个元素x(即更新后的字典副本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:57:06