Python中if/elif语句的替代方法是什么?

2024-05-21 00:09:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码当前看起来如下:

if option1:
    ...
elif option2:
    ...
elif option3:
    ....

如此等等。虽然我并不对此感到不快,但我想知道在python中是否有更好的选择。我的脚本是一个基于控制台的脚本,在这里我使用argparser来获取用户需要的内容。


Tags: 代码用户脚本内容ifelifoption1option2
3条回答

如果“option”可以包含“one”、“two”或“three”,则可以

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

有关详细信息,请参见:PEP 308: Conditional Expressions

我猜你是从别的地方开始编写Python脚本的,在那里,switch语句可以解决你的问题。因为在Python中这不是一个选项,所以您正在寻找另一种方法来做事情。

但是,如果没有上下文,你就不能很好地回答这个问题(有太多的选择)。

我将提出一个(有点像Python)替代方案:

让我们从一个我认为你来自哪里的例子开始。

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

但是,如前所述,如果没有上下文,这可能不是你想要的。

相关问题 更多 >