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

时间:2018-01-25 06:15:17

标签: python

通常我们正在检查脚本是否在主范围内运行 就像在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

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

1 个答案:

答案 0 :(得分:5)

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

一般来说,if __name__ == "__main__"块的目的是允许导入模块,以便在其中使用函数,类等。导入模块时退出此目的会失败。

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