def create_parser(): root_parser = ArgumentParser(description='article fetch operations') root_parser.add_argument('--list_home', help='list lookup directory') add_subparsers(root_parser.add_subparsers()) return root_parser def add_subparsers(subparsers): parser_list = subparsers.add_parser('list') parser_list.add_argument('target_list', nargs='?', help='Name of the list or list file') parser_list.set_defaults(func=get_list) ... def main(argv=None): parser = create_parser() args = parser.parse_args(argv) kwargs = dict(args._get_kwargs()) args.func(**kwargs) return if __name__ == '__main__': sys.exit(main())