大多数pythonic方式接近多个条件函数

时间:2017-11-21 04:30:55

标签: python function if-statement

也许只是我,但我似乎几乎每天都遇到这个问题。我在很多地方听说过功能应该紧凑且易于阅读。

我经常有一个场景,我有多个条件都返回不同的值。像。的东西。

def conditionals():
    if something1:
        return item1
    if something2:
        return item2
    if something3:
        return item3
         ...

有了更多条件,函数不紧凑,肯定不可读。我发现做得更好的唯一方法是制作一个特定于每个项目返回的功能。但是在我的代码中,我觉得我有这么多功能。无论如何,解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

如果您的数据是合适的,您可以使用字典来存储条件和操作之间的映射:

def conditionals(something):
    somethings = {something1: item1, something2: item2, something3: item3}
    try:
        return somethings[something]
    except KeyError:
        return None 

此词典还可以包含可根据条件调用以执行操作的函数:

def conditionals(somecondition):
    conditions = {condition1: action1, condition2: action2, condition3: action3}
    try:
       conditions[somecondition]()
    except KeyError:
       print(f"action not found for {somecondition}") 

def action1():
    do_this()

def action2():
    do_that()

def action3():
    do_this()
    do_that()

答案 1 :(得分:-2)

如果您的条件和返回值不太长,例如

def f(x):
    return (-x*x      if  x<0  else
            0         if  x<2  else
            (x-2)**3               )

当然,可读性在旁观者的眼中......