parser = argparse.ArgumentParser()
parser.add_argument('--num_classes', type=int, default=5) # 我们可以看到参数num_classes前面有--这个意思是num_classes为可选参数,也就是在运行后可以不在控制台输入该参数的值,如果一个参数前面
没有--表示该参数为必选参数在运行后的控制台上必须输入其值
parser.add_argument('--epochs', type=int, default=30)
opt = parser.parse_args()
补充:请注意在默认情况下,如果一个可选参数未被使用,则默认可选参数的值为None,并且它不能和整数值相比较
首先我们先来解释一下上面这段代码是干嘛的,用大白话来说这段代码运行起来之后我们可以通过控制台输入对应的参数然后使其输出你想要的结果,下面举个官方的简单小例子:
import argparse
parser = argparse.ArgumentParser(description="求解平方") # 第一步:创建一个ArgumentParser()对象 description这个参数的作用是说明做什么
parser.add_argument("square", help="display a square of a given number",
type=int) # 第二步:添加参数通过add_argument()
args = parser.parse_args() # 第三步:解析参数
print(args.square**2)
# 整个代码解释:首先我们通过add_argument()添加了一个参数square,然后type确定了square的类型为int
然后print(args.square**2)的意思是对输入的参数进行平方操作
然后我们运行程序之后在控制台输入python prog.py 4,就可以得到结果16,prog.py是你写代码自己建的py文件
# 思维跳台一下,这里的square前面没有--说明这个参数是必选参数,所以在控制台执行的时候一定要输入python prog.py 4,square也就是这里的4
add_argument()中的关键字action的作用:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbose", help="increase output verbosity",
action="store_true") #可以看到我们增加了一个参数action="store_true",有什么作用呢?action设置为store_true,那么当可选参数verbose未设置采用默认值是则不再是None了,而是被设置为True
args = parser.parse_args()
if args.verbose: # 设置为True了,if可以执行
print("verbosity turned on")
# 运行程序
python prog.py --verbose # 这里指定了--verbose则变为True,如果未指定则verbose的值仍然是False
输出结果:verbosity turned on
短语句:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="increase output verbosity",
action="store_true") # 这里出现了"-v", "--verbose"两个,其实是一个,-v可以看成是--verbose的别名
args = parser.parse_args()
if args.verbose:
print("verbosity turned on")
运行程序:输入:python prog.py -v
输出:verbosity turned on
输入:python prog.py --verbose
输出:verbosity turned on
两者的效果一样
注意顺序无关紧要:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbose", action="store_true",
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbose:
print(f"the square of {args.square} equals {answer}")
else:
print(answer)
运行程序:
输入:python prog.py 4 --verbose
输出:the square of 4 equals 16
输入:python prog.py --verbose 4
输出:the square of 4 equals 16
add_argument()中的关键字choices的作用:
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],
help="increase output verbosity")
# choices限制了--verbosity只能在0,1,2中取值
add_argument()中的关键字default的作用:
parser.add_argument("-v", "--verbosity", action="count", default=0,
help="increase output verbosity")
# 默认情况下如果一个可选参数没有被指定,它的值会是 None,并且它不能和整数值相比较,但是如果把dafault设置为0,即使在程序运行后未指定-v这个参数,也默认将这个参数的值设置为0
有写的不对的地方,请大家多多指教!