这两个模式产生相同的结果。使用哪一个无关紧要?为什么?
我更喜欢第二个,它缩进的少,对我来说看起来更干净,但是我没有看到它使用太多(在我去过的地方)。如果由于某些原因建议使用不当,我不想定居并使用它。
IF ... ELSE
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
会使它隐式出现,我坚信易于阅读和理解的显式代码。
Explicit is better than implicit.
平面比嵌套更好。
所以第二种方法更像Pythonic。
[我个人发现,与嵌套代码相比,平面代码更易于阅读,并且出错率也较低(例如,else
语句未正确排列可能很难调试)。当然,这些都是主观判断。