通常我们正在检查脚本是否在主范围内运行,
就像在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)
几乎我们的每个想法都是错误的或已经在某处使用过,
所以 - 我正在寻找这种方法的用法并没有得到任何结果.
看起来我是唯一使用它的人.我根本不相信,
但为什么那么(如果没有隐藏的,悲惨的惊喜)是不是
它应该如此受欢迎?
您的建议的主要缺陷是导入您的模块将导致整个解释器退出.这意味着您根本无法导入模块.如果您尝试,该程序将终止.
通常,if __name__ == "__main__"块的目的是允许导入模块,以便您可以在其中使用函数,类等.导入模块时退出此目的会失败.
此外,对身体进行"额外缩进" main不仅仅是浪费行间距.主体main将缩进,因为它是函数的主体,并且如果导入模块,该函数可以从其他地方调用.这意味着其他人可以在不运行的情况下导入您的模块main,但是main如果他们需要,可以稍后调