接受2个位置参数,但在传递字符串时给出了3个

2024-10-02 12:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python3.x脚本,我正在传递一个字符串作为参数。如果我使用文本字符串,它会工作,但当我将其作为变量传递时,我得到: “接受2个位置参数,但给出了3个”

network_id和mtag在上面的for循环中填充,但是我使用了这段代码并手动运行了它,得到了相同的响应。如果在network_id之后插入,则不带“”的mTags的值将正确处理,但这种方式不会正确处理。需要帮助了解正在发生的情况以尝试修复此问题

network_id = N_573083052582975205

mTags = "tags=['1504007', '3850357_all', '3850373_all']"

response = dashboard.networks.updateNetwork(network_id, mTags)
return response

Tags: 字符串代码文本脚本idfor参数response
1条回答
网友
1楼 · 发布于 2024-10-02 12:31:41

看起来您对参数类型和参数的传递方式有点困惑

source code中,updateNetwork是一个方法,签名是updateNetwork(self, networkId, **kwargs)

当您使用类的方法时,self会自动作为该方法的属性实例传入

你在干什么

dashboard.networks.updateNetwork(network_id, mTags)

这是在呼吁:

updateNetwork(dashboard.networks, network_id, mTags)

但这与签名不符。签名中可以有两个位置参数,其余必须是关键字参数

下一个问题是,您分配给mTags的是一个字符串。但是tags实际上应该是一个列表。您可以通过取消该字符串的引号并去掉无用的mTags赋值来解决这个问题

总的来说,你会:

tags = ['1504007', '3850357_all', '3850373_all']
response = dashboard.networks.updateNetwork(network_id, tags=tags)

相关问题 更多 >

    热门问题