我想听听关于这个问题的意见:之后有很多代码是不是一个坏主意
if __name__ == '__main__':
我问这个的原因是,我当前的项目有大约 40000 行代码,并且随着它的增长,我不断在上述语句之后添加行。所以这个程序预计会有大约 3000 行代码,我担心在这个语句之后我会有太多的代码。所以问题是“在这条语句之后编写大量代码是一种好的 Python 方式吗?”
我想听听关于这个问题的意见:之后有很多代码是不是一个坏主意
if __name__ == '__main__':
我问这个的原因是,我当前的项目有大约 40000 行代码,并且随着它的增长,我不断在上述语句之后添加行。所以这个程序预计会有大约 3000 行代码,我担心在这个语句之后我会有太多的代码。所以问题是“在这条语句之后编写大量代码是一种好的 Python 方式吗?”
一个简单的替代方法是将您的主要代码添加到一个函数中,然后在检查main()
后简单地调用它。__name__
这样,你得到:
__name__
支票的好处main
函数!)。一个例子:
def main():
# Be awesome here.
if __name__ == '__main__':
main() # or sys.exit(main()), if you want to return an exit code
如果你想重用你的代码,你不应该在之后保留它if __name__ == '__main__'
(将它用于函数/类/模块,并从程序的这一部分进行最简单的调用)。让我在这里提一下 Python 之禅(在你的情况下至少有两点):
稀疏比密集好。
可读性很重要。
听起来这里有两个不同的观点:
在所有其他条件相同的情况下,最好定义封装由 400 行命令式代码表示的行为的函数,以提高可读性、可测试性、可维护性(可能还有“-ability”的一些其他值)。
由 限定的代码__name__ == '__main__'
仅在直接调用文件时执行,而不是作为模块包含在import
. 所以,像这样的文件
def be_awesome():
pass
if __name__ == '__main__':
def be_more_awesome():
pass
be_more_awesome
只有在作为源参数提供给 python 调用时才会有定义,而不是在导入时。__name__
因此,作为一般规则,将仅当文件作为脚本直接运行时才应运行的代码准确地放在测试之后是合适的。问自己这些问题
main
函数一样)如果其中任何一个问题的答案是“是”,则它(可能)属于__name__
测试之后;如果不是,它(可能)不会。