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

Python函数传参:重复传同名关键字参数、临时修改字典传参方案

问题1:是否支持重复传同名关键字参数靠后值覆盖?

Python 3.8 环境下不支持。
该版本中只要函数调用时检测到重名关键字参数(无论参数是显式写入还是通过**解包字典生成),会直接抛出TypeError: my_func() got multiple values for keyword argument 'a'错误。后传入的同名关键字自动覆盖前序值的特性是Python 3.10才正式加入的,3.8及更早版本无法使用该写法。

问题2:是否有不修改原字典、无需单独新建字典的临时改参写法?

有,Python 3.5+ 全版本支持内联字典解包合并的写法,完全满足需求,不需要提前定义临时字典变量,也不会改动原字典内容:

# 临时将a参数值改为Goodbye传参,原my_dict不会有任何改动
my_func(**{**my_dict, 'a': 'Goodbye'})

写法逻辑:{**my_dict, 'a': 'Goodbye'}会在内存中生成一个独立的临时字典,先把原my_dict的所有键值对解包存入临时字典,再把后面显式声明的'a': 'Goodbye'写入,自动覆盖临时字典里a对应的原有值,整个过程不会读写原字典的内容。
如果需要临时修改多个参数,直接在后面追加键值对即可:

# 同时修改a和d的传入值
my_func(**{**my_dict, 'a': 'Goodbye', 'd': 99})

补充:如果后续升级到Python 3.10及以上版本,除了上述写法,还可以直接写成my_func(**my_dict, a='Goodbye'),靠后写的显式关键字会自动覆盖解包出来的同名参数值,写法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:21:19