我只是想知道在python中哪种方式更可取。 想象一下两个功能:
def foo(key):
if bar.has_key(key):
return bar.get(key)
# do something with bar
# this will be executed if bar_key(key) is False
...
return something
def foo(key):
if bar.has_key(key):
return bar.get(key)
else:
# do something with bar
# this will be executed if bar_key(key) is False
...
return something
正如您所看到的,唯一的区别是else
声明。所以问题是它会以某种方式影响性能。或者有没有理由在这类函数中包含else
?
答案 0 :(得分:7)
如果选择在这两种方法之间,我会选择第一种方法。 return
非常明确地表示执行在此时终止。由于这个原因,我发现if x { return y } else { ... }
是一种反模式(不仅仅是在Python中 - 我在C / C ++代码中看到这一点,它也让我感到烦恼)。
如果要返回,则else
块是完全没有必要的,并且会导致可能非常大的代码块的无意义缩进。您拥有的嵌套结构越多,在阅读代码时保持头部正确的上下文就越困难。出于这个原因,当它不混淆逻辑时,我倾向于更少的嵌套,在这种情况下,我认为它不会。
答案 1 :(得分:4)
pythonic方式:
def foo(key):
return bar.get(key, something)
答案 2 :(得分:4)
虽然这个问题有点基于意见,但我会说第二个更多是 Pythonic ,原因是“显性比隐含更好”。第二个功能显然是“如果出现这种情况,请执行此操作。否则,请执行此操作”。另一方面,第一个函数暗示“其他”部分。