我有这个代码:
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'
这是什么意思?我该如何解决这个问题?
当指定关键字参数覆盖位置参数时,就会发生这种情况。例如,假设有一个函数绘制一个彩色框。该函数选择要使用的颜色,并将绘制框的任务委托给另一个函数,并传递所有额外参数。
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应该接受height和width参数)。
color
"blellow"
"green"
painter.draw_box
height
width
这在示例中很容易看出,但当然,如果在调用时混淆了参数,可能不容易调试:
# misplaced height and width color_box(20, 30, color="green")
这里,color被赋值20,然后args=[30]和color再次被赋值"green"。
20
args=[30]