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.