是不是检查python脚本是否没有在主范围内运行更好?

Syl*_*sta 0 python

通常我们正在检查脚本是否在主范围内运行,
就像在Python文档中一样:__ main__,如下所示:

if __name__ == "__main__":
    # execute only if run as a script
    main()
Run Code Online (Sandbox Code Playgroud)

这很简单明了,但也存在问题 - 缩进.
整个def main():还有额外的缩进.
它有害吗?我 - 是的,有点.

在Python中,我们对行长度特别敏感.
这对于每次都要尊重空间很重要,不仅仅是
在写第79个字符时.

因此,我正在寻找减少
冗余缩进的好方法.
在我看来 - 有一个.也简单,清晰,优雅.

if __name__ != "__main__":
    exit()
# execute only if run as a script
Run Code Online (Sandbox Code Playgroud)

几乎我们的每个想法都是错误的或已经在某处使用过,
所以 - 我正在寻找这种方法的用法并没有得到任何结果.
看起来我是唯一使用它的人.我根本不相信,
但为什么那么(如果没有隐藏的,悲惨的惊喜)是不是
它应该如此受欢迎?

Bre*_*arn 5

您的建议的主要缺陷是导入您的模块将导致整个解释器退出.这意味着您根本无法导入模块.如果您尝试,该程序将终止.

通常,if __name__ == "__main__"块的目的是允许导入模块,以便您可以在其中使用函数,类等.导入模块时退出此目的会失败.

此外,对身体进行"额外缩进" main不仅仅是浪费行间距.主体main将缩进,因为它是函数的主体,并且如果导入模块,该函数可以从其他地方调用.这意味着其他人可以在不运行的情况下导入您的模块main,但是main如果他们需要,可以稍后调

  • @Harvey:是的,关键是,这是一个不好的论点,因为谁说它"不需要"?使主入口点作为函数可用是一件好事,因为它允许在需要时按需运行入口点代码,而将代码保留在函数之外可以防止这种情况发生. (2认同)