TypeError:为argumen获取多个值

2024-03-28 22:15:07 发布

您现在位置: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'

Tags: inboxfalsetrueforif错误range
0条回答
网友
1楼 · 发布于 2024-03-28 22:15:07

如果忘记类方法中的self声明,也会发生这种情况。

示例:

class Example():
    def is_overlapping(x1, x2, y1, y2):
        # Thanks to https://stackoverflow.com/a/12888920/940592
        return max(x1, y1) <= min(x2, y2)

调用失败就像self.is_overlapping(x1=2, x2=4, y1=3, y2=5) 使用:

{TypeError} is_overlapping() got multiple values for argument 'x1'

有效

class Example():
    def is_overlapping(self, x1, x2, y1, y2):
        # Thanks to https://stackoverflow.com/a/12888920/940592
        return max(x1, y1) <= min(x2, y2)
网友
2楼 · 发布于 2024-03-28 22:15:07

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

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"

网友
3楼 · 发布于 2024-03-28 22:15:07

我也有同样的问题,很容易解决,但我花了一段时间来看穿。

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

我有

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

但应该是

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

相关问题 更多 >