通常我们正在检查脚本是否在主范围内运行 就像在Python文档中一样:__main__,就像这样:
if __name__ == "__main__":
# execute only if run as a script
main()
这很简单明了,但也存在问题 - 缩进。
整个def main():
有额外的缩进
它有害吗?我 - 是的,有点。
在Python中,我们对行长度特别敏感
这对于每次尊重空间都很重要,而不仅仅是
写第79个字时。
因此我正在寻找减少的好方法
冗余缩进。
在我看来 - 有一个。也简单,清晰,优雅。
if __name__ != "__main__":
exit()
# execute only if run as a script
我们几乎每个想法都是错误的或已经在某处使用过,
所以 - 我一直在寻找这种方法的用法而一无所获
看起来我是唯一使用它的人。我根本不相信,
但为什么那么(如果没有隐藏的,悲惨的惊喜)并不像它那样受欢迎
应该是什么?
答案 0 :(得分:5)
您的建议的主要缺陷是导入您的模块将导致整个解释器退出。这意味着您根本无法导入模块。如果您尝试,程序将终止。
一般来说,if __name__ == "__main__"
块的目的是允许导入模块,以便在其中使用函数,类等。导入模块时退出此目的会失败。
此外,对main
的主体进行“额外缩进”不仅仅是浪费行间距。 main
的主体将缩进,因为它是函数的主体,并且如果导入模块,该函数可以从其他地方调用。这意味着其他人可以在不运行main
的情况下导入您的模块,但稍后可以明确地调用main
。