什么';Python中if/elif语句的替代方案是什么?
我的代码当前看起来像这样:什么';Python中if/elif语句的替代方案是什么?,python,Python,我的代码当前看起来像这样: if option1: ... elif option2: ... elif option3: .... 诸如此类。虽然我对它并不不满,但我想知道python中是否有更好的替代方案。我的脚本是一个基于控制台的脚本,我使用argparser获取用户需要的内容 如果“选项”可以包含“一”、“二”或“三”,您可以 def handle_one(): do_stuff def handle_two(): do_stuff def hand
if option1:
...
elif option2:
...
elif option3:
....
诸如此类。虽然我对它并不不满,但我想知道python中是否有更好的替代方案。我的脚本是一个基于控制台的脚本,我使用argparser获取用户需要的内容 如果“选项”可以包含“一”、“二”或“三”,您可以
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]()
这是我想到的第一件事: 而不是这样做:
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
有关更多详细信息,请参见: 我猜您是在其他地方开始编写Python脚本,在那里使用
开关语句可以解决您的问题。因为在Python中这不是一个选项,所以您正在寻找另一种方法来做事情
但是,如果没有上下文,你就无法很好地回答这个问题(有太多的选项)
我将加入一个(有点像蟒蛇)备选方案:
def add_to_x (x):
vals = { 3 : 5 , 4 : 8 , 5 : 10 }
return vals[x]
让我们从一个我认为你来自哪里的例子开始
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]
你也可以把它放进去
但是,如上所述,如果没有上下文,这可能不是您想要的;例如,您可以使用到模型分派的映射。相关阅读:如果表达式(optionN
)是常量,您可以尝试dict:)@MartijnPieters。我使用它来确定用户选择了哪些参数。如果要解析命令行,请使用内置python库,例如,也可以更好地阅读它们的代码以添加默认值,这将取决于默认选项是否可行/是否合理如果没有作为输入传递怎么办?@dkrynicki如果需要处理未知,可以使用.get(option,some_default_函数)而不是[option]——这将取决于用例,但它可能会隐藏错误。这似乎是字典承担的责任。每个人似乎都在暗示这一点。这当然是一条路要走。非常像蟒蛇。