如何避免大量的 If 语句?
How to avoid numerous If statements?
描述:
我正在使用一个小脚本来执行另一个脚本,该脚本属于一组脚本,具体取决于给定的选项。例如:如果选项 --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种可能。每个选项单独,两个选项组合在一起,所有选项一起。我希望我的脚本相应地执行子脚本。假设给出选项 --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 语句的公式?对于我忽略的问题,是否有明显的解决方案?
只需在第一个示例中使用 3 个常规 if 语句,而不是 else-if。那不会成功吗?
描述:
我正在使用一个小脚本来执行另一个脚本,该脚本属于一组脚本,具体取决于给定的选项。例如:如果选项 --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种可能。每个选项单独,两个选项组合在一起,所有选项一起。我希望我的脚本相应地执行子脚本。假设给出选项 --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 语句的公式?对于我忽略的问题,是否有明显的解决方案?
只需在第一个示例中使用 3 个常规 if 语句,而不是 else-if。那不会成功吗?