如何避免众多If语句?

时间:2016-01-31 10:02:05

标签: python-2.7 argparse

说明

我正在使用一个小脚本来执行另一个脚本,该脚本属于一组脚本,具体取决于给出的选项。例如:如果给出选项--PatchPanel,则只会执行CreatePatchPanel.py,即使同时给出了选项--Room。 IF语句的顺序反映了脚本的优先级。

我的代码:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--Room', action='store', dest='room', help='')
parser.add_argument('--Enclosure', action='store', dest='enclosure', help='')
parser.add_argument('--PatchPanel', nargs='*',  action='store',
dest='patchpanel', help='')
args = parser.parse_args()

if args.patchpanel:
    execfile('CreatePatchPanel.py')

elif args.enclosure:
    execfile('CreateEnclosure.py')

elif args.room:
    execfile('CreateRoom.py')

有3种选择可能有7种情况。每个选项单独组合,共有2个选项,所有选项组合在一起。我希望我的脚本相应地执行子脚本。假设给出了选项--PatchPanel和--Room,我希望先执行CreatePatchPanel.py,然后再执行CreateRoom.py。

到目前为止我的方法:

我尝试用if语句覆盖每个案例:

...
if args.patchpanel and args.enclosure:
    execfile('CreatePatchPanel.py')
    execfile('CreateEnclosure.py')

if args.patchpanel and args.room:
    execfile('CreatePatchPanel.py')
    execfile('CreateRoom.py')

if args.enclosure and args.room:
    ... 
    ...   
...

但是在更多选项的情况下,这将导致很多if语句。

我的问题:

是否有编程技术或范例允许我绕过众多IF语句的制定?对我的问题有一个明显的解决方案,我忽略了吗?

1 个答案:

答案 0 :(得分:2)

在第一个示例中使用3个常规if语句,而不是else-if。不会有这个伎俩吗?