Python程序启动

Kir*_*tov 19 python

我应该用以下内容启动Python程序:

if__name__ == '__main__':
some code...
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?我多次看到它,但对它没有任何线索.

Jou*_*nen 30

如果您的程序可用作库但您还有一个主程序(例如,用于测试库),那么该构造允许其他人将该文件作为库导入而不运行您的主程序.如果您的程序名为foo.py并且您从另一个python文件执行"import foo",则__name__求值为'foo',但如果从命令行运行"python foo.py",则__name__求值为'__main__'.

请注意,您需要在if和_之间插入一个空格,并缩进主程序:

if __name__ == '__main__':
    main program here
Run Code Online (Sandbox Code Playgroud)


Cha*_*ffy 23

一个更好的模式是:

def main():
   ...

if __name__ == '__main__':
   main()
Run Code Online (Sandbox Code Playgroud)

这允许您导入代码的人调用您的代码,同时还可以使pycheckerpylint等程序工作.


ori*_*rip 21

Guido Van Rossum 建议:

def main(argv=None):
  if argv is None:
    argv = sys.argv
  ...

if __name__ == "__main__":
    sys.exit(main())
Run Code Online (Sandbox Code Playgroud)

这样,您就可以运行main()从别的地方(供应参数),如果你想只是一个错误代码退出return 1main(),也不会误使交互式解释退出.