首页 > 解决方案 > 避免 if 案例 python

问题描述

我有以下代码:

  1. 检查调度策略
  2. 根据调度策略
  3. 检查关联的调度周期

目前我只有两种调度策略,因此我的代码非常简单:

def test_scheduling_parameters(schedulingStrategy: str, schedulingPeriod: str):
    """
    :param schedulingStrategy:Could be CRON_DRIVEN or TIMER_DRIVEN
    :param schedulingPeriod: If CRON would be in the form of '* * * * * ?', else XX sec (or min)
    :return:
    """
    sche_strat = ['TIMER_DRIVEN', 'CRON_DRIVEN']
    if schedulingStrategy in sche_strat:
        if schedulingStrategy == 'TIMER_DRIVEN' and re.match('\d+\s(sec|min)$', schedulingPeriod):
            return True
        elif schedulingStrategy == "CRON_DRIVEN" and croniter.is_valid(schedulingPeriod[:-2]):
            return True
        else:
            return "Error: Wrong scheduling period"
    else:
        return "Error: Wrong scheduling strategy"

我想知道如果我有更多的调度策略而不增加 if 案例,我该怎么办?

我有一个包含策略名称和验证功能的字典的想法,这是最好的方法吗?

标签: pythonpython-3.xminify

解决方案


类似下面的东西

def test_scheduling_parameters(schedulingStrategy: str, schedulingPeriod: str):
    """
    :param schedulingStrategy:Could be CRON_DRIVEN or TIMER_DRIVEN
    :param schedulingPeriod: If CRON would be in the form of '* * * * * ?', else XX sec (or min)
    :return:
    """
    sche_strat = ['TIMER_DRIVEN', 'CRON_DRIVEN']
    if schedulingStrategy == 'TIMER_DRIVEN' and re.match('\d+\s(sec|min)$', schedulingPeriod):
        return True, ''
    elif schedulingStrategy == 'CRON_DRIVEN' and croniter.is_valid(schedulingPeriod[:-2]):
        return True, ''
    else:
        return False, "Wrong scheduling period" if schedulingStrategy in sche_strat else 'Wrong scheduling strategy'

推荐阅读