catalpa-bungei 发表于 2023-6-23 11:54:56

parser和args分别是什么

解析器parser是ArgumentParser类的一个实例吗?args是parser的一个实例吗?

def config_parser():

    import configargparse
    parser = configargparse.ArgumentParser()
    parser.add_argument('--config', is_config_file=True,
                        help='config file path')
    parser.add_argument("--expname", type=str,
                        help='experiment name')
    parser.add_argument("--basedir", type=str, default='./logs/',
                        help='where to store ckpts and logs')
    parser.add_argument("--datadir", type=str, default='./data/llff/fern',
                        help='input data directory')   
    return parser

parser = config_parser()
args = parser.parse_args()

陶远航 发表于 2023-6-23 11:57:19

是的,parser 是 ArgumentParser 类的一个实例,而 args 是 parser 的一个实例。

在代码中,config_parser() 函数创建了一个 ArgumentParser 的实例并返回它,这个实例被赋值给变量 parser。

然后,通过调用 parser.parse_args() 方法,解析器会解析命令行参数并将结果存储在 args 对象中。这里 args 是 parser 实例的一个实例,它包含了解析后的参数值。

因此,parser 是 ArgumentParser 的一个实例,args 是 parser 的一个实例。

catalpa-bungei 发表于 2023-6-23 12:04:27

陶远航 发表于 2023-6-23 11:57
是的,parser 是 ArgumentParser 类的一个实例,而 args 是 parser 的一个实例。

在代码中,config_pars ...

谢谢大佬!我还有个问题:
vars(args)返回的是什么呢?是各个参数名称构成的列表吗?

isdkz 发表于 2023-6-23 12:05:19

解析器(parser)是一种用于解析命令行参数的工具。在这种情况下,解析器是通过configargparse库中的ArgumentParser类来创建的一个实例。解析器用于定义和解析命令行参数,我们可以定义参数的名称、类型、默认值和帮助信息等,并在执行程序时解析相应的参数。
args是通过parser解析命令行参数后得到的一个命名空间(namespace)对象。这个对象保存了解析后的参数值,可以通过对象属性的方式来访问这些参数值。在这里,我们可以通过args来访问--config、--expname、--basedir和--datadir等参数的值。例如,要访问--config的值,可以使用args.config。

陶远航 发表于 2023-6-23 12:06:28

catalpa-bungei 发表于 2023-6-23 12:04
谢谢大佬!我还有个问题:
vars(args)返回的是什么呢?是各个参数名称构成的列表吗?

vars(args) 返回的是一个包含 args 对象中所有参数及其对应值的字典。

具体来说,vars(args) 返回一个字典,其中字典的键是参数的名称,而字典的值是该参数在解析后的实际值。

例如,如果你的参数 --expname 的值是 "example",那么 vars(args)['expname'] 将返回字符串 "example"。

因此,vars(args) 并不返回参数名称构成的列表,而是返回一个字典,其中键是参数名称,值是参数的实际值。你可以通过遍历字典或使用字典的其他方法来获取参数及其值。
页: [1]
查看完整版本: parser和args分别是什么