Python脚本必须将函数定义为main吗?

Cel*_*tas 7 python coding-style python-3.x

必须/应该Python脚本有main()功能吗?例如,可以替换

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

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

(或其他一些有意义的名字)

Mar*_*ers 10

使用命名函数main()只是一种约定.你可以给它任何你想要的名字.

当代码没有作为模块执行时,测试模块名称只是防止代码运行的一个很好的技巧__main__(即不是作为Python开始的脚本导入,而是作为模块导入时).您可以在该if测试下运行您喜欢的任何代码.

在这种情况下使用函数有助于通过将名称分流到本地名称空间来保持模块的全局名称空间不整洁.命名该功能main()很常见,但不是必需的.

  • @martineau:不,全局级别的所有代码都在导入模块时运行(可以直接作为脚本运行,也可以是间接导入).当你没有直接作为脚本运行时,`if __name__`测试然后*禁用*代码.我看到我的文字搞得一团糟,修好了. (2认同)

mic*_*pri 7

不,Python脚本不必具有main()功能.它只是遵循约定,因为您放在if __name__ == '__main__':语句下的函数是真正完成脚本所有工作的函数,因此它是主函数.如果确实有函数名称可以使程序更容易阅读和更清楚,那么您可以改为使用该函数名称.

事实上,你甚至不需要这个if __name__ == '__main__':部分,但这是一个很好的做法,而不仅仅是一个惯例.main()当您将文件作为模块导入时,它只会阻止函数或其他任何您想要调用的函数.如果你不想导入脚本,你可能不需要它,但它仍然是一个很好的做法.有关它的更多信息以及它为什么会这样做,请参阅如果__name__ =="__ main__"该怎么办?