小能豆

TypeError:参数有多个值

py

我有这个代码:

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'

这是什么意思?我该如何解决这个问题?


阅读 33

收藏
2024-09-27

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

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

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

这里,color被赋值20,然后args=[30]color再次被赋值"green"

2024-09-27