Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么使可选参数成为可选参数和位置参数成为必需?_Python_Argparse - Fatal编程技术网

Python 什么使可选参数成为可选参数和位置参数成为必需?

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

试图找到这个问题的答案,但在任何地方都找不到

我正在学习本教程:我理解位置参数和可选参数之间的区别,但我不理解的是argparse如何决定哪个参数是位置参数,哪个参数是可选参数

例如,我从上面链接到的教程:

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'可以是任意顺序,因为它们的存在由标志字符串指示选项甚至可以重复或省略(尽管在这些情况下发生的情况取决于
操作
所需参数)。