gpt4 book ai didi

Python - 在本地函数调用中解包 kwargs

转载 作者:太空狗 更新时间:2023-10-29 22:21:22 26 4
gpt4 key购买 nike

我想传递一个字典:

items = {"artist": "Radiohead", "track": "Karma Police"}

作为此函数的参数:

def lastfm_similar_tracks(**kwargs):

result = last.get_track(kwargs)
st = dict(str(item[0]).split(" - ") for item in result.get_similar())
print (st)

其中 last.get_track("Radiohead", "Karma Police") 是调用本地 function 的正确方法。

然后这样调用它:

lastfm_similar_tracks(items)

我收到这个错误:

TypeError:lastfm_similar_tracks() 正好接受 0 个参数(给定 1 个)

我应该如何纠正这个问题?

最佳答案

一些混淆:

您正在将字典 items 作为参数传递,但没有双星。这意味着 items 被视为第一个 positional 参数,而您的函数仅定义了 **kwargs

这是一个简单的函数:

>>> def f(**kwargs):
... print (kwargs)

让我们将 items 传递给它:

>>> items = {"artist": "Radiohead", "track": "Karma Police"}
>>> f(items)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes 0 positional arguments but 1 was given

糟糕:不允许位置参数。您需要使用双星号才能打印:

>>> f(**items)
{'artist': 'Radiohead', 'track': 'Karma Police'}

这将我们引向下一个问题:kwargs 函数内部是一个字典,因此您不能只将它传递给 last.get_track,根据您的示例,它有两个位置参数。假设顺序很重要(几乎可以肯定),您需要从要传递的字典中获取正确的值:

result = last.get_track(kwargs['artist'], kwargs['track'])

关于Python - 在本地函数调用中解包 kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40178978/

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