*args 给我带来了未知的麻烦
*args is giving me unknown trouble
@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)))
我对 Python 编码和使用 API 还很陌生,但我似乎无法让它工作。
此代码应接受用户输入(在命令之后)并在其他地方(在给定 ID 的目的地)重新打印。但是,在接受用户输入时,似乎附加了一些奇怪的标点符号。
例如,'Hi' 变为 ('Hi',)。它总是相同的标点符号。正如您在上面看到的,我已经尝试了两种不同的拉参数方法。我找遍了,但找不到答案 - 知道为什么 *args 像 this/how 一样工作来绕过它吗?
感谢任何帮助!
这就是长度为 1 的 tuples
的简单表示方式:
>>> ('Hi', 'Bye')[:1]
('Hi',)
*args
捕获 0 个或多个参数,并将它们存储在元组中。当你的函数被一个参数调用时,你会得到一个包含那个元素的元组:
>>> def foo(*args):
... print(args)
...
>>> foo('Hi')
('Hi',)
您正在将该元组转换为字符串,这样做您包括了整个元组表示法。或许您可以 将这些字符串连接 成一个更长的字符串,中间有空格?
像这样:
name = ' '.join(args)
await Ava.change_presence(game=discord.Game(name=name))
这确实假设函数的所有参数始终是字符串。
尝试使用 *args
传递参数
例如,你的情况
await Ava.send_message(message.Object(id='207602020968955906'), *args)
@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)))
我对 Python 编码和使用 API 还很陌生,但我似乎无法让它工作。
此代码应接受用户输入(在命令之后)并在其他地方(在给定 ID 的目的地)重新打印。但是,在接受用户输入时,似乎附加了一些奇怪的标点符号。
例如,'Hi' 变为 ('Hi',)。它总是相同的标点符号。正如您在上面看到的,我已经尝试了两种不同的拉参数方法。我找遍了,但找不到答案 - 知道为什么 *args 像 this/how 一样工作来绕过它吗?
感谢任何帮助!
这就是长度为 1 的 tuples
的简单表示方式:
>>> ('Hi', 'Bye')[:1]
('Hi',)
*args
捕获 0 个或多个参数,并将它们存储在元组中。当你的函数被一个参数调用时,你会得到一个包含那个元素的元组:
>>> def foo(*args):
... print(args)
...
>>> foo('Hi')
('Hi',)
您正在将该元组转换为字符串,这样做您包括了整个元组表示法。或许您可以 将这些字符串连接 成一个更长的字符串,中间有空格?
像这样:
name = ' '.join(args)
await Ava.change_presence(game=discord.Game(name=name))
这确实假设函数的所有参数始终是字符串。
尝试使用 *args
例如,你的情况
await Ava.send_message(message.Object(id='207602020968955906'), *args)