我想听听有关这个问题的意见:在
之后有很多代码是不错的主意 if __name__ == '__main__':
我问这个的原因是,我当前的项目有大约400行代码,随着它的增长,我继续在上面的语句之后添加行。所以这个程序预计会有大约3000行代码,我很担心,在这个语句之后我会有太多的代码。所以问题是“在这个声明之后编写大量代码是一种很好的pythonic方法吗?”
答案 0 :(得分:5)
一个简单的替代方法是将主代码添加到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
答案 1 :(得分:1)
如果你想重用你的代码,你不应该在if __name__ == '__main__'
之后保留它(用于函数/类/模块,并从程序的这一部分进行最简单的调用)。让我在这里提到Python的禅(至少在你的情况下有两点):
稀疏优于密集。
可读性计数。
答案 2 :(得分:1)
听起来这里有两个不同的要点:
在所有其他条件相同的情况下,可读性,可测试性,可维护性(以及可能的其他一些“-ability”值)更好地定义封装由400行命令式代码表示的行为的函数。
__name__ == '__main__'
限定的代码在直接调用文件时仅执行 ,而不是作为import
的模块包含。所以,像
def be_awesome():
pass
if __name__ == '__main__':
def be_more_awesome():
pass
将只有be_more_awesome
的定义,而不是在导入时。因此,作为一般规则,在__name__
测试之后恰当地放置应该仅在文件作为脚本直接运行时运行的代码是合适的。问问自己这些问题
main
函数封装了400行)如果这些问题中的任何一个的答案为“是”,则它(可能)属于__name__
测试之后;如果没有,它(可能)不会。