gpt4 book ai didi

Python 方法采用一个位置参数,但给出了两个

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:13 25 4
gpt4 key购买 nike

我遇到了一个我不太明白的错误。如果我有以下代码片段:

class Test(object):
def __init__(self):
self.data = {}

def update_data(self, **update):
self.data = update

t = Test()

t.update_data(test='data') # Works
t.update_data({'test':'data'}) # TypeError: update_data() takes 1 positional argument but 2 were given

据我所知,**update 语法是字典解构语法,当您将 dict 传递给函数时,它会转换为关键字参数。

我在这里有什么不正确的理解?

最佳答案

如果您只是传入一个字典,它将被视为任何其他变量。在您的情况下,您将其作为位置参数传入,因此它将被视为位置参数。但是,该方法不接受任何位置参数(self 除外,但那是另一回事),因此它会引发错误。

如果您想将字典内容作为关键字参数传递,您需要将其解压(字典前面的**):

t.update_data(**{'test':'data'})

如果您想将字典作为字典传递,您也可以将其作为关键字参数传递(这样就不会进行解包!):

t.update_data(funkw={'test':'data'})

关于Python 方法采用一个位置参数,但给出了两个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com