python - 避免 if 案例 python
问题描述
我有以下代码:
- 检查调度策略
- 根据调度策略
- 检查关联的调度周期
目前我只有两种调度策略,因此我的代码非常简单:
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 案例,我该怎么办?
我有一个包含策略名称和验证功能的字典的想法,这是最好的方法吗?
解决方案
类似下面的东西
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'
推荐阅读
- c# - 如何在 Unity3d 中仅设置两个对象进入水平组布局?
- xml - 根据属性值修改 XML 的现有元素
- elasticsearch - 在 elasticsearch 中搜索通过摄取附件索引的文档
- python - 匹配前面没有其他文字的文字的正则表达式
- python-3.x - Opencv fitellipse 绘制错误的轮廓
- youtube-analytics-api - 可通过 API 获得的 Youtube 唯一浏览量数据?
- c# - 使用文本框过滤记录时维护复选框的状态
- python - 如何在python中使用LSTM将预测值的输出反馈回输入
- c# - 如何在 Outlook 中知道收到的电子邮件是回复还是不回复?
- python - 如何在以json为值的熊猫中分组?