python库argparse中type的新奇指定方法

最近在看一些项目的源码,总是能学到好多东西。

关于arparse中type的类型指定

不止可以指定常规类型,还可以加一些自己类型判断,具体用法如下(来源):

def str2bool(v):
    """ Usage:
    parser.add_argument('--pretrained', type=str2bool, nargs='?', const=True,
                        dest='pretrained', help='Whether to use pretrained models.')
    """
    if v.lower() in ('yes', 'true', 't', 'y', '1'):
        return True
    elif v.lower() in ('no', 'false', 'f', 'n', '0'):
        return False
    else:
        raise argparse.ArgumentTypeError('Unsupported value encountered.')


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--syncbn',  type=str2bool, nargs='?', default=False,
                        dest='network.syncbn', help='Whether to sync BN.')