类型错误:参数有多个值

新手上路,请多包涵

我阅读了与此错误有关的其他线程,似乎我的问题与我到目前为止阅读的所有帖子有一个有趣的明显区别,即,到目前为止所有其他帖子都有关于用户创建的错误类或内置系统资源。我在调用函数时遇到了这个问题,我无法弄清楚它的用途。有任何想法吗?

 BOX_LENGTH = 100
turtle.speed(0)
fill = 0
for i in range(8):
    fill += 1
    if fill % 2 == 0:
        Horizontol_drawbox(BOX_LENGTH, fillBox = False)
    else:
        Horizontol_drawbox(BOX_LENGTH, fillBox = True)

    for i in range(8):
        fill += 1
        if fill % 2 == 0:
            Vertical_drawbox(BOX_LENGTH,fillBox = False)
        else:
            Vertical_drawbox(BOX_LENGTH,fillBox = True)

错误信息:

     Horizontol_drawbox(BOX_LENGTH, fillBox = True)
TypeError: Horizontol_drawbox() got multiple values for argument 'fillBox'

原文由 chopper draw lion4 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 367
2 个回答

当指定的关键字参数覆盖了位置参数时,就会发生这种情况。例如,让我们想象一个绘制彩色框的函数。该函数选择要使用的颜色并将框的绘制委托给另一个函数,传递所有额外参数。

 def color_box(color, *args, **kwargs):
    painter.select_color(color)
    painter.draw_box(*args, **kwargs)

然后打电话

color_box("blellow", color="green", height=20, width=30)

将失败,因为两个值被分配给 color"blellow" 作为位置和 "green" 作为关键字。 ( painter.draw_box 应该接受 heightwidth 参数)。

这在示例中很容易看出,但当然,如果在调用时混淆了参数,则可能不容易调试:

 # misplaced height and width
color_box(20, 30, color="green")

Here, color is assigned 20 , then args=[30] and color is again assigned "green" .

原文由 Cilyan 发布,翻译遵循 CC BY-SA 3.0 许可协议

我遇到了同样很容易解决的问题,但花了我一段时间才看清。

我已将声明复制到我正在使用它的地方,并在那里留下了“自我”论点,但我花了很长时间才意识到这一点。

我有

self.myFunction(self, a, b, c='123')

但它应该是

self.myFunction(a, b, c='123')

原文由 Q—ten 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题