我正在使用
ArgumentParser
在 python 中,让用户可以选择将自己的函数添加到我的脚本中。为此,我给他们一个函数来生成在 argparse 中使用的数据
add_argument()
功能。我注意到 add_argument 的签名是
add_argument(self, *args, **kwargs)
但是当查看 vscode 中的文档时,我可以看到它可以获得的所有不同参数(action、nargs、const、default 等)。
Python是如何做到的?据我所知,当您给用户
**kwargs
时,它会显示为 **kwargs
就是这样。
我浏览了这个网站和整个互联网,但我找不到它使用的语法。
语言服务器从typeshed中的存根文件中提取,其中当前定义是:
def add_argument(
self,
*name_or_flags: str,
action: _ActionStr | type[Action] = ...,
nargs: int | _NArgsStr | _SUPPRESS_T | None = None,
const: Any = ...,
default: Any = ...,
type: _ActionType = ...,
choices: Iterable[_T] | None = ...,
required: bool = ...,
help: str | None = ...,
metavar: str | tuple[str, ...] | None = ...,
dest: str | None = ...,
version: str = ...,
**kwargs: Any,
) -> Action: ...
旁注:看起来您正在使用 Pylance,它正在向类型添加一些详细信息。例如,对于
_T@add_argument
,它看起来像是在说 _T
的范围是 add_argument
。我正在使用 Jedi,它显示不同的细节。