194 words
1 minute
var-function
  • 如果你在代码里用点取值(如 args.lr),那就不需要 vars()
  • vars() 主要是把对象的属性视图拿出来(通常是 __dict__),变成“字典式访问/传参”更方便。

你可以这样记:

  • args = parser.parse_args() 得到 Namespace
  • args.lr:点号访问(对象风格)
  • vars(args)['lr']:字典访问(mapping 风格)

vars 是 Python 内置函数,常见用法有两个:

  1. vars(obj)
    返回对象的属性字典(本质上通常是 obj.__dict__)。

  2. 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)
var-function
https://ny-wakeup.github.io/myblog/posts/var-function/
Author
Nwaky
Published at
2026-04-20
License
CC BY-NC-SA 4.0