194 words
1 minute
var-function
- 如果你在代码里用点取值(如
args.lr),那就不需要vars()。 vars()主要是把对象的属性视图拿出来(通常是__dict__),变成“字典式访问/传参”更方便。
你可以这样记:
args = parser.parse_args()得到Namespaceargs.lr:点号访问(对象风格)vars(args)['lr']:字典访问(mapping 风格)
vars 是 Python 内置函数,常见用法有两个:
-
vars(obj)
返回对象的属性字典(本质上通常是obj.__dict__)。 -
vars()(不传参数)
在函数里等价于locals(),返回当前局部符号表。
为什么很多脚本写 vars(parser.parse_args())?
因为后续函数可能想要 dict,比如:
- 方便
config.update(...) - 方便序列化成 json/yaml
- 方便
some_func(**config_dict)
典型流程:
args = parser.parse_args() # args 是 Namespace
print(args.lr) # 像属性一样取值
cfg = vars(args) # 转成 dict
main(cfg)