Python 使用“如果…”有关系吗。。。如果。。。返回;{隐式else}`?

Python 使用“如果…”有关系吗。。。如果。。。返回;{隐式else}`?,python,control-flow,Python,Control Flow,这两种模式产生相同的结果。用哪一个重要吗?为什么? 我更喜欢第二种,它有较少的压痕,只是看起来更干净,但我还没有看到它使用了很多(在我去过的地方)。我不想在某件事上下定决心,如果出于某种原因不明智的话,就把它用得到处都是 如果……否则 if not packages: help('download') else: for p in packages: do_download(p) verify_md5(p) etc(

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

我更喜欢第二种,它有较少的压痕,只是看起来更干净,但我还没有看到它使用了很多(在我去过的地方)。我不想在某件事上下定决心,如果出于某种原因不明智的话,就把它用得到处都是

如果……否则

if not packages:
    help('download')
else:        
    for p in packages:
        do_download(p)
        verify_md5(p)
        etc(p)
如果……返回;隐式其他

if not packages:
    help('download')
    return

for p in packages:            
    do_download(p)
    verify_md5(p)
    etc(p)
发件人:

平的比嵌套的好

所以第二种方法更像是蟒蛇


我个人认为平面代码比嵌套代码更容易阅读,也不容易出错(例如,
else
语句排列不正确可能很难调试)。当然,这些都是主观判断。

这是一种风格。。。但我总是更喜欢使用
else
。正如您在问题标题中明确指出的那样,没有
else
会使其含蓄,而且我坚信明确的代码易于阅读和理解

也来自


这两种方式都不重要。这取决于你。有一些历史观点支持保留来自任何函数的单个返回语句(它可以使维护长方法更容易),但我认为这在很大程度上被认为是当今的首选。有一些工具可以测量Python程序的代码覆盖率,这些程序通过插入Python代码来工作。为了测量通常所说的“分支覆盖率”,他们必须计算条件块未执行的频率(即,
else
分支被命中的频率)。拥有显式的
else:
分支大大简化了为此目的检测源代码的过程。我在强制执行可能与else块中的代码没有特别关系的期望时使用隐式else模式,但是如果else与if条件紧密相关,则使用if和else@MattCoubrough:也有历史上的观点与此完全相反:)当然,这几乎是重复的,但并不完全重复:我总是喜欢扁平样式,因为你按顺序阅读,早期返回表明你不必再遵循执行的分支。好。还有一件事要记住。那很好。。。。但是其他人的想法不同,所以不幸的是我不得不承认,这是一个风格的问题…+1引用了zenUh哦,我们有一个Python的禅宗<代码>显式优于隐式,但
扁平式优于嵌套式
。。。嘘!(我也更喜欢明确地说)我对“如果”和“其他”的理解很容易理解,返回的结果令人困惑和误导。所以我会坚持第一个我正处在做刘易斯·布莱克式咆哮的边缘。。。HBBBRRRHHRR。
返回怎么可能是模糊的或误导的?我们的思维方式肯定有本质上的不同…
return
也是明确的。
Explicit is better than implicit.