Python 什么使可选参数成为可选参数和位置参数成为必需?
试图找到这个问题的答案,但在任何地方都找不到 我正在学习本教程:我理解位置参数和可选参数之间的区别,但我不理解的是argparse如何决定哪个参数是位置参数,哪个参数是可选参数 例如,我从上面链接到的教程:Python 什么使可选参数成为可选参数和位置参数成为必需?,python,argparse,Python,Argparse,试图找到这个问题的答案,但在任何地方都找不到 我正在学习本教程:我理解位置参数和可选参数之间的区别,但我不理解的是argparse如何决定哪个参数是位置参数,哪个参数是可选参数 例如,我从上面链接到的教程: import argparse parser = argparse.ArgumentParser() parser.add_argument("square", type=int, help="display a square of a given n
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:
print("{}^2 == {}".format(args.square, answer))
else:
print(answer)
为什么“square”参数是位置参数而“-verbosity”参数是可选的?参数(默认为-
)将参数定义为标志,因此是可选的。如果前缀\u字符
不存在,则确定其为位置字符
prefix\u chars
可以在解析器实例化时设置,parser=argparse.ArgumentParser(prog='prog',prefix\u chars='-+')
请参阅文档中的“”
…而
和-
指示可选参数的原因是它们是默认参数,谢谢!我没有意识到这是可配置的。在我发布问题后不久,我就意识到了这一点。至少如果其他人也有同样的想法,他们就能找到答案。应该注意的是,称它们为可选的,虽然是惯例,但有点误导,因为对于nargs=?
来说,“位置”参数可以是可选的。另一个区别是,“位置”参数必须按照定义的顺序给出。即使nargs=?
顺序很重要。”optionals'可以是任意顺序,因为它们的存在由标志字符串指示选项甚至可以重复或省略(尽管在这些情况下发生的情况取决于操作
和所需参数)。