python - Discord.py - 有没有办法使用 *args 或带有多个单词的参数而不是最后一个参数?
问题描述
这是当前命令:
`async def namemembers(self, ctx, members, name, *args):`
这工作得很好,但我想在 *args 之后添加更多参数,或者如果有另一种使用name
参数的方法来允许空格和多个单词。如果我尝试做类似的事情:
`async def namemembers(self, ctx, members, name, *args, worlds):`
为了定义世界,它总是说这world
是一个缺失的必要参数。“世界”被 a 分割,/
但它仍将 a 视为/
*args 的一部分。理想情况下,我会有这样的命令:
`async def nameM(self, ctx, name, *, worlds):`
这将允许我使用name
多个单词的参数。由于目前以这种方式使用它“允许”我输入多个单词,但机器人无论如何只发回第一个单词。
希望我的问题是有道理的。
解决方案
No.*args
是模棱两可的,因为它需要任意数量的参数,因此 Python 无法知道您何时完成了*args
和 on worlds
。
Python 不知道也不允许你强迫worlds
自己成为一个 kwarg。
根据经验,您可以按以下顺序编写带有参数的方法:
def main(arg1, arg2, ..., *args, *kwargs):
pass
推荐阅读
- r - 用随机行的值替换数据框中的特定值
- javascript - 谷歌翻译元素获取当前语言
- c# - 为什么它计算一些数字正确而一些数字错误?C#
- css - 每行的最后一个元素在悬停时将下一行的第一个元素推向右侧
- python - Python 发布请求使用请求库引发 400 'Bad Request' 错误,但适用于 cURL
- sql - 如何使 OR 函数只显示一个结果
- macos - MacOS + Visual Studio Code:通过路径将文件夹添加到工作区
- flutter - 混淆何时使用 Child 和 children
- html - 在 NextJS 页面之间导航时如何保持当前的 tabIndex
- c# - 无法让 StateHasChanged 更新 @if 语句