使用`if ... else`或`if ... return;是否重要; {隐含其他}`?

时间:2014-11-11 08:25:07

标签: python flow-control

这两种模式产生相同的结果。使用哪一个是否重要?为什么呢?

我更喜欢第二种,它的压痕更少,对我来说看起来更干净,但我还没有看到它用得太多(在我曾经去过的地方)。如果出于某种原因感到不适,我不想满足于某些事情并全部使用它。

如果... ELSE

if not packages:
    help('download')
else:        
    for p in packages:
        do_download(p)
        verify_md5(p)
        etc(p)

如果... RETURN; IMPLICIT ELSE

if not packages:
    help('download')
    return

for p in packages:            
    do_download(p)
    verify_md5(p)
    etc(p)

2 个答案:

答案 0 :(得分:6)

来自The Zen of Python

  

Flat比嵌套好。

所以第二种方法更像是Pythonic。

我个人觉得扁平代码比嵌套代码更容易阅读,并且不易出错(例如,else语句没有正确排列可能很难调试。当然,这些都是主观判断。

答案 1 :(得分:6)

这是一种风格的东西......但我总是喜欢使用else。正如您在问题标题中明确指出的那样,没有else使其隐含,我强烈相信易于阅读和理解的显式代码。

同样来自The Zen of Python

Explicit is better than implicit.