if __name__ == "__main__" 没有额外的缩进:

mna*_*gel 5 python program-entry-point idioms

我知道为“脚本风格”Python 程序定义 main() 方法是一种很好的风格,这样以后就可以选择将其作为模块包含在内。

所以让我们假设这段代码(随机片段):

a = 5
if a > 0:
    print a
Run Code Online (Sandbox Code Playgroud)

变成

def main():
    a = 5
    if a > 0:
        print a

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

导致我的所有代码都缩进一级。为了最大程度地清晰起见,我尝试避免代码中不必要的缩进/嵌套,因此我想知道是否可以在这里做一些事情,例如

if __name__ != "__main__":
    return # just leave this file

a = 5
if a > 0:
    print a
Run Code Online (Sandbox Code Playgroud)

但是(当然)这会触发:

SyntaxError: 'return' outside function
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?可取吗?惯用语?

Mar*_*ers 3

不,不可能,真的。

当您的模块__name__不是由另一段代码作为常规模块导入时。 '__main__'在这种情况下你不能提前退出。

一次额外的缩进级别有什么问题呢?只需点击编辑器中的选项卡即可完成?就我个人而言,我发现使用main()函数比不缩进代码更好地记录意图。

  • “main”函数(与所有其他函数一样)应该很小。我不明白为什么某些行的缩进级别会破坏清晰度。当然,如果您在“main()”中编写数百行,它可能会变得有点难看,但这适用于每个函数——如上所述。 (3认同)
  • @hek2mgl:在 Python 中,缩进比其他语言更重要。我同意你的观点,但这不是删除缩进级别以增加清晰度的地方之一。 (2认同)