深度学习训练任务出现got multiple values for argument

本文探讨了在Python编程中遇到的'gotmultiplevaluesforargument'错误,该错误通常由于参数列表与预期不一致引起。作者在配置文件中使用函数名作为成员变量导致了额外参数的传递。解决方案是使用@property装饰器来定义配置中的函数对象,以避免隐藏参数导致的问题。博客内容着重于Python函数参数的正确传递和配置文件的编写规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面的话:由于python是两天速成,并没有系统学习这门语言的设计思想、解释器运行原理,所以总是会踩到各式各样的坑。

如题,got multiple values for argument,可能的原因1:

参数列表包含:“name”, "import"这种关键字。

参数列表与预期不一致。

例如:
在做一些训练任务时候,为了快速调整配置出不同情况下的实验任务。我会在任务的根目录写一个config.py。这时候。
preprocess
有一些预处理类的函数会被以配置的形式出现在config.py。这样在config.py里就可以方便地切换预处理、编码函数、运行调试地平台兼容等。如下:
config.py
本着一切皆对象的原则,函数名以成员变量的形式传给了config的成员,然而这么写并不对。(如下图红色画出来的地方)
函数地错误写法
因为配置文件的config.XXX还有个隐藏的传参。所以实际传参时候,调用阶段参数列表会多一个参数。(通过*args可以看到)所以会导致“got multiple values for argument”问题。所以正确的写法应该是:
@property
def XXXX(self):的方式去配置config里的函数对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值