为什么可选参数中的破折号转换为下划线,但 argparse 的位置参数不转换为下划线

mad*_*esh 7 python command-line arguments command-line-interface argparse

我目前正在构建一个cli工具,并使用该模块遇到了一些令人头疼的功能argparse(至少对我来说令人头疼)。我进行了快速google搜索,但找不到任何答案——尽管我的搜索术语很可能是不正确的。

以下屏幕截图说明了该行为:

在此输入图像描述

情况是这样的:

  • 位置参数,用键中的破折号定义
  • 可选参数,也用键中的破折号定义

.parse_args()当传递into的结果时vars(),位置参数中的破折号会被保留(如预期),但对于可选参数来说,情况似乎并非如此,即,对于可选参数,破折号会转换为下划线。

我在这里缺少什么?我希望 python 导出可以解释为什么存在这种行为..提前致谢。

m

忍者编辑:

提交这篇文章后,我想到这可能与--用于声明可选参数的前缀有关。但我仍然想知道实际的推理。

编辑:

有人向我指出,这与此无关,vars()但问题仍然存在:为什么会出现这种行为?