没有额外的缩进,如果__name__=="__main__":



我知道为"脚本风格"的python程序定义main()方法是一种很好的风格,这样它以后就可以选择性地作为模块包含。

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

a = 5
if a > 0:
    print a

成为

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

导致我的所有代码被缩进一级。为了获得最大的清晰度,我尽量避免在代码中进行不必要的缩进/嵌套,因此我想知道是否可以在这里做一些事情,比如

if __name__ != "__main__":
    return # just leave this file
a = 5
if a > 0:
    print a

但(当然)这会触发:

SyntaxError: 'return' outside function

这样的事情可能发生吗?明智的惯用的

可以执行以下操作:

if __name__ != "__main__":
    throw TypeError("Attempted to import command-line only script")
# Your code here

然而,我建议不要使用这种模式——大多数时候,很明显,脚本只是命令行。如果有人有你在脚本中定义的东西的用例,他们不应该为了导入一个函数而编辑它。

不,不可能,真的。

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

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

函数应该做一件事,这也适用于main。它应该做(一些)main的事情,其他的一切都应该在函数和类中完成。

绝对没有理由将其视为"不必要的缩进"…

您必须诱导导入程序本身采取不同的行为。这可能是可能的,虽然很困难,但肯定不可取,因为你会引入一些非常意想不到的行为。

如果你真的想避免额外的缩进,我想你可以实现一个"public"one_answers"private"模块,其中public模块基于if __name__ == '__main__'分支以加载不同的private模块。但为了避免一些额外的凹痕,这似乎有很多困难需要克服。在任何情况下,如果main()足够长,以至于缩进会困扰您,那么您可能应该首先考虑将更多的缩进分解为函数。

相关内容

  • 没有找到相关文章