Python 2.7 如何避免大量的If语句?

Python 2.7 如何避免大量的If语句?,python-2.7,argparse,Python 2.7,Argparse,说明: 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='*',

说明:

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')
我使用一个小脚本来执行另一个脚本,它属于一组脚本,具体取决于给定的选项。例如:如果给出了选项--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

我目前的做法:

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')
我试图通过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语句

我的问题:

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')

有没有一种编程技术或范例可以让我绕过许多IF语句的公式?对于我忽略的问题,是否有一个明显的解决方案?

在第一个示例中使用3个常规if语句,而不是else if。这难道不管用吗

哎呀。我太快了。没有考虑到你的特殊情况。