我的代码目前看起来像这样:
if option1:
...
elif option2:
...
elif option3:
....
等等。虽然我并不满意,但我想知道在python中是否有更好的选择。我的脚本是一个基于控制台的脚本,我使用argparser来获取用户需要的内容。
答案 0 :(得分:11)
如果“选项”可以包含“一个”,“两个”或“三个”,则可以执行
def handle_one():
do_stuff
def handle_two():
do_stuff
def handle_three():
do_stuff
{'one': handle_one,
'two': handle_two,
'three': handle_three}[option]()
答案 1 :(得分:3)
我猜你正在用其他地方的背景启动Python脚本,其中switch
语句可以解决你的问题。因为这不是Python中的一个选项,所以你正在寻找另一种方法来做事。
如果没有上下文,你不能很好地回答这个问题(有太多的选择)。
我会投入一个(有些Pythonic)替代方案:
让我们从一个我认为你来自哪里的例子开始。
def add_to_x (x):
if x == 3:
x += 2
elif x == 4:
x += 4
elif x == 5:
x += 5
return x
这是我的替代选择:
def add_to_x (x):
vals = { 3 : 5 , 4 : 8 , 5 : 10 }
return vals[x]
您还可以将look into lambdas放入the dictionary structure I used。
但是,如上所述,没有背景,这可能不是你想要的。
答案 2 :(得分:2)
这是我想到的第一件事:
而不是这样做:
if option1:
a = 1
elif oprtion2:
a = 2
elif oprtion3:
a = 3
else:
a = 0
你可以这样做:
a = 1 if option1 else 2 if option 2 else 3 if option3 else 0
有关详细信息,请参阅:PEP 308: Conditional Expressions!