也许只是我,但我似乎几乎每天都遇到这个问题。我在很多地方听说过功能应该紧凑且易于阅读。
我经常有一个场景,我有多个条件都返回不同的值。像。的东西。
def conditionals():
if something1:
return item1
if something2:
return item2
if something3:
return item3
...
有了更多条件,函数不紧凑,肯定不可读。我发现做得更好的唯一方法是制作一个特定于每个项目返回的功能。但是在我的代码中,我觉得我有这么多功能。无论如何,解决这个问题的最佳方法是什么?
答案 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 )
当然,可读性在旁观者的眼中......