Python *args给我带来了未知的麻烦

Python *args给我带来了未知的麻烦,python,python-3.x,discord,Python,Python 3.x,Discord,我对Python编码和使用API还是相当陌生的,但我似乎无法让它发挥作用 此代码应接受用户输入(在命令之后),并在其他位置(给定ID的目标位置)重新打印。然而,在接受用户输入时,它似乎附加了一些奇怪的标点符号 例如,“Hi”变成“Hi”。它总是相同的标点符号。我已经尝试了两种不同的方法来拉args,正如您在上面看到的。我找遍了所有的地方,都找不到答案-你知道为什么*args会这样工作/如何绕过它吗 谢谢你的帮助 这就是长度为1的元组的表示方式: @Ava.command() async def

我对Python编码和使用API还是相当陌生的,但我似乎无法让它发挥作用

此代码应接受用户输入(在命令之后),并在其他位置(给定ID的目标位置)重新打印。然而,在接受用户输入时,它似乎附加了一些奇怪的标点符号

例如,“Hi”变成“Hi”。它总是相同的标点符号。我已经尝试了两种不同的方法来拉args,正如您在上面看到的。我找遍了所有的地方,都找不到答案-你知道为什么*args会这样工作/如何绕过它吗


谢谢你的帮助

这就是长度为1的
元组的表示方式:

@Ava.command()
async def general(*args):
    await Ava.send_message(message.Object(id='207602020968955906'), args)

@Ava.command(aliases=['game'])
async def setgame(*args):
    await Ava.change_presence(game=discord.Game(name='%s'% (args)))

*args
捕获0个或多个参数,并将这些参数存储在元组中。当使用一个参数调用函数时,将得到一个包含该元素的元组:

>>> ('Hi', 'Bye')[:1]
('Hi',)
您正在将该元组转换为字符串,并在转换过程中包含整个元组表示法。也许您可以将这些字符串连接成一个较长的字符串,中间有空格

像这样:

>>> def foo(*args):
...     print(args)
...
>>> foo('Hi')
('Hi',)

这确实假设函数的所有参数始终是字符串。

尝试使用
*args

例如,在你的情况下


wait Ava.send_message(message.Object(id='2076020968955906'),*args)
args
是一个元组
('Hi',)
就是那个元组,其中有一个元素。它必须是一个元组,因为
*args
意味着您将捕获0个或多个参数。为什么要为此使用
*args
?不要将元组
args
的字符串表示形式与实际数据混淆。它只添加了额外的字符来表示类型,就像在
'Hi'
中出现引号一样,它们不是存储数据的一部分。非常感谢您的快速响应-我意识到我是个白痴,没有正确使用*args。作为一个快速的第二个问题,我想-我将如何允许对带有空格的字符串进行计数?使用sampleString而不是*args,它只接受字符串中的第一个单词。@KitSmith:听起来像是
Ava
为您拆分命令,并将结果单词作为单独的参数传入。我不熟悉Ava,看看他们的文档?@KitSmith:Google搜索,我没有看到任何与
discord
Python API相关的
Ava
类,所以我猜这是您自己代码中的一个名称。但同样,您需要查看您的库文档,了解负责实现
.command()
装饰器的内容。
name = ' '.join(args)
await Ava.change_presence(game=discord.Game(name=name))