我读了其他与这个错误有关的线程,似乎我的问题与我目前读到的所有帖子有一个有趣的明显区别,即,目前为止所有其他帖子都有关于用户创建的类或内置系统资源的错误。我在调用函数时遇到了这个问题,我不知道它可能是什么。有什么想法吗?
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'
7条答案
按热度按时间x8goxv8g1#
当一个关键字参数覆盖了一个位置参数时,就会发生这种情况。例如,让我们想象一个绘制彩色方框的函数。该函数选择要使用的颜色,并将方框的绘制委托给另一个函数,传递所有额外的参数。
然后那个电话
将失败,因为为
color
指定了两个值:"blellow"
作为位置参数,"green"
作为关键字。(painter.draw_box
应该接受height
和width
参数)。这在示例中很容易看到,但当然,如果在调用时混淆了参数,则可能不容易调试:
这里,
color
被分配为20
,然后args=[30]
和color
再次被分配为"green"
。ccgok5k52#
我也有同样的问题,这真的很容易,但我花了一段时间才看穿。
我已经将声明复制到了使用它的地方,并将
self
参数留在了那里,但我花了很长时间才意识到这一点。我有
但应该是
inn6fuwd3#
如果您忘记了类方法中的
self
声明,也会发生这种情况。示例:
self.is_overlapping(x1=2, x2=4, y1=3, y2=5)
一样调用它:{TypeError} is_overlapping()获取了参数"x1"的多个值
pnwntuvh4#
只要使用
keyword arguments
和args
、kwargs
的组合调用函数,也会引发此异常"它会升起
而且它也会变得更加复杂,每当你误用它在继承。所以要小心,我们这东西!
1-使用
keyword arguments
和args
调用函数:2-调用包含
keyword arguments
和kwargs
的函数,该函数也包含关键字参数:fafcakar5#
简单地说,你不能做以下事情:
因为您将变量'y'传入函数两次:一次作为kwargs,一次作为函数声明。
7d7tgy0s6#
我被带到这里来的原因到目前为止在答案中没有明确提到,所以为了保存别人的麻烦:
如果函数参数更改了顺序,也会发生错误-原因与可接受的答案相同:位置参数与关键字参数冲突。
在我的例子中,这是因为Pandas
set_axis
函数的参数顺序在0.20和0.22之间变化:使用set_axis的常见示例会导致此令人困惑的错误,因为当您调用:
在0.22之前,
['a', 'b', 'c']
被赋值给axis,因为它是第一个参数,然后位置参数提供“多个值”。yzuktlbb7#
我得到了与使用
@classmethod
相同的错误。如果有人在类中使用
@classmethod
时遇到此错误,请不要忘记将cls
参数传递到方法中:上述代码将引发原因“TypeError:参数””错误,获得多个值,您应按如下方式传递
cls
: