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

mat*_*kie 3 python flow-control

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

我更喜欢第二种,它有较少的缩进,只是看起来更清洁,但我没有看到它用得太多(在我去过的地方).如果由于某种原因不明智,我不想满足于某些事情并全部使用它.

如果别的

if not packages:
    help('download')
else:        
    for p in packages:
        do_download(p)
        verify_md5(p)
        etc(p)
Run Code Online (Sandbox Code Playgroud)

IF ...回报; 隐含的

if not packages:
    help('download')
    return

for p in packages:            
    do_download(p)
    verify_md5(p)
    etc(p)
Run Code Online (Sandbox Code Playgroud)

twa*_*lig 6

来自Python的禅宗:

Flat优于嵌套.

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

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


Leo*_*eon 6

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

同样来自The Zen of Python

Explicit is better than implicit.
Run Code Online (Sandbox Code Playgroud)

  • 哦,我们有一个禅宗的Python矛盾!"明确比隐含更好",但"扁平比嵌套更好"...... BOOOOOM!(我也更喜欢明确) (8认同)
  • 他们在我看来“如果和其他”的方式很容易理解,返回是混淆和误导的。所以我会坚持第一个 (2认同)