如何使此功能更清洁?

时间:2020-11-03 07:48:34

标签: python

start()函数是一个简单的ideabank程序的一部分,该程序可以存储想法。我想使其更整洁,或者将其拆分以用于更多功能。

您可以使用第二个参数(“ --list”列出想法或使用“ --delete”删除想法)调用ideabank程序,如果使用“ --delete”,则需要为第三个参数提供一个数字(您要删除的提示的数量)。启动函数处理这些异常。 您有什么建议可以使start()函数更清洁吗?

def start():
    if len(sys.argv) == 1:
        ask_for_an_idea()
    elif sys.argv[1] == "--list":
        print_ideas(read_ideas())
    elif sys.argv[1] == "--delete":
        try:
            number = int(sys.argv[2])
        except (IndexError, ValueError):
            print("Specify a number after --delete")
        else:
            try:
                delete_idea(read_ideas(), number)
            except IndexError:
                print(f"You have only {len(read_ideas())} idea(s).")
            else:
                print_ideas(read_ideas())


if __name__ == "__main__":
    start()

1 个答案:

答案 0 :(得分:0)

类似这样的东西:

if __name__ == '__main__':
  arg_parser = argparse.ArgumentParser()
  arg_parser.add_argument('--list', help='Print ideas')
  arg_parser.add_argument('--delete', default=-1, type=int, help='Specify which idea to delete')
  arg_parser.add_argument('--store_new_idea', help='Prompt for a new idea')

  args = arg_parser.parse_args()
  if args.list is not None:
    print_ideas()
  if args.delete >= 0:
    delete_idea(args.delete)
  if args.store_new_idea is not None:
    prompt_new_idea()