一尘不染

TypeError:参数有多个值

python

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

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'

阅读 230

收藏
2020-12-20

共1个答案

一尘不染

当指定关键字参数覆盖位置参数时,会发生这种情况。例如,让我们想象一个绘制彩色框的函数。该函数选择要使用的颜色,并将框的图形委托给另一个函数,从而中继所有其他参数。

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"作为position和"green"as关键字。(painter.draw_box应该接受heightwidth参数)。

在示例中很容易看到这一点,但是,如果在调用时混淆了参数,则调试起来可能并不容易:

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

在这里,color被分配20,然后args=[30]color被分配"green"

2020-12-20