这两个功能中哪一个更"pythonic"?

Vor*_*Vor 6 python

我只是想知道python中哪种方式更可取.想象一下两个功能:

1功能:

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
Run Code Online (Sandbox Code Playgroud)

2功能:

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
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,唯一的区别就是else陈述.所以问题是它会以某种方式影响性能.或者是否有任何理由包含else此类功能?

cdh*_*wie 7

如果选择在这两种方法之间,我会选择第一种方法. return很明确,执行在那时终止.我找到if x { return y } else { ... }了一个反模式出于这个原因(不仅仅是在Python中 - 我在C/C++代码中看到了它,它也让我感到烦恼).

如果要返回,else则完全不需要块,并且会导致可能非常大的代码块的无意义缩进.您拥有的嵌套结构越多,在阅读代码时保持头部正确的上下文就越困难.出于这个原因,当它不混淆逻辑时,我倾向于更少的嵌套,在这种情况下,我认为不会.

  • [是的,一千次是的.](http://programmers.stackexchange.com/q/18454/7043) (2认同)