根据用户输入循环字典

时间:2021-07-12 01:01:34

标签: python

任何人都可以就重构以下内容提出一些建议:

我有 3 个需要按顺序运行的函数,这些函数将从字典中获取参数

reports = {
  '01': report_one,
  '02': report_two,
  '03': report_three
}

def func_one(report):
  do_something()

def func_two(input):
  do_something()

def func_three(report_name):
  do_something()

我需要给用户两个选择:

  1. 运行字典中的所有报告
  2. 生成单个报告

我想出了以下内容:

if report == 'all':
  for report_number, report_name in reports.items():
    extract = func_one(report=report_number)
    transform = func_two(extract)
    func_three(transform, report_name=report_name)

else:
  extract = func_one(report=report)
  transform = func_two(extract)
  func_three(transform, report_name=reports[report])

这让我觉得不太干净,所以我将这 3 个函数重构为另一个函数:

def report_selection(report_number, report_name):
  extract = func_one(report=report_number)
  transform = func_two(extract)
  func_three(transform, report_name=report_name)

并在 if/else 中调用它:

if report == 'all':
  for report_number, report_name in reports.items():
    report_selection(report_number=report_number, report_name=report_name)

else:
  report_selection(report_number=report_number, report_name=reports[report_number])

我在这里遗漏了什么吗?也许使用嵌套字典比使用 if/else 控制用户输入更有效?

0 个答案:

没有答案