打印有效参数

Print effective arguments

我 运行 一个带有长参数列表(> 20 个参数)的 python 程序。参数具有所有默认值(如果未被用户覆盖)。在程序启动时,我打印有效参数以了解程序是如何启动的。今天我使用一个愚蠢的例程打印:

def print_config(args):
    print("Configuration:")
    print("  shoes:   {}".format(args.shoes))
    print("  socket:  {}".format(args.socket))
    [...]

如何使用智能迭代器打印它?

args 是一个 argparse.Namespace 对象。 class,或者说它的 super 有一个 repr 方法。这就是你做的时候看到的

print(args)

repr(您可以在 argparse.py 文件中找到)的相关行是:

    arg_strings = []
    for name, value in sorted(self.__dict__.items()):
        arg_strings.append('%s=%r' % (name, value))
    return '%s(%s)' % (type_name, ', '.join(arg_strings))

如果您加入“\n”而不是“,”,它会给出接近您的版本的内容。

vars(args) 给出与 args.__dict__.items().

相同的字典

print(parser.parse_args([])) 将显示所有默认值,无需任何用户输入。当然,如果需要输入,那是行不通的。