为什么我不推荐呢?毫无疑问,Python中没有所谓的main入口函数,但是网上经常有文章提到“Python的Main函数”和“推荐写Main函数”。他们的目的可能是模仿真正的主要功能,但很多人被误导(或误解)并编写了非常繁琐的代码。在“为什么选择Python”系列的这个故事中,我们将讨论为什么Python没有main函数?最后,您将获得本系列前两个故事的链接。在开始正题之前,让我们先回答以下两个问题:所谓的“Main函数”是什么意思?为什么有些编程语言需要强制写主函数?一些编程语言将main函数作为程序的执行入口,如C/C++++、C#、Java、Go、Rust等,具有特定的含义:这个main函数名是必填的,这意味着必须有一个主要功能。main函数最多只能有一个,也就是说程序的入口是唯一的。语法格式有特定的要求,具有相对固定的模板。为什么必须强制执行主要功能?这些语言都是编译型语言,需要将代码编译成可执行的二进制文件,供OS/bootloader找到程序的开始,所以需要定义这个函数。简而言之,需要在大量可执行代码中定义一个重要的开始。不难看出,main函数是这些语言不可或缺的一部分。然而,当我们再看Python时,情况就大不一样了。每个.py文件都是一个可执行文件,可以作为整个程序的入口文件,也就是说程序的入口是灵活的,不需要遵循任何约定。有时在运行Python项目时,没有指定入口文件(在命令行中,如“python-mhttp.server8000”),可能是main.pya文件的存在,以“文件”的形式执行在包中简而言之,这意味着脚本语言Python不同于编译语言。与其他语言不同,它可以选择灵活的执行方法,既可以在单个模块级别(即.py文件),也可以在由多个模块定义的条目组成的包级别。换句话说,Python不需要规定程序员必须在语法级别定义统一的条目(无论是函数、类还是其他东西)。有些同学可能会疑惑,因为经常看到或者自己写出如下代码:#mainfiledefmain():...if__name__=='__main__':main()这不是Python的main函数吗?相信我们很多人都这么认为!不,不对,只不过函数名是“main”,与我们前面介绍的正统的main函数没有半点关系,不是强制性的,并不一定决定程序执行的顺序。没有它,它不会导致任何语法问题。有些人之所以要将函数命名为“main”,其实是为了强调其“主入口”的地位,希望将其调度为人类执行的第一个函数。他们可能认为这样命名的函数更容易记住。他们写__name__=='main'的原因可能是为了表明main()仅在直接执行当前脚本时运行,而不是在将其导入其他模块时运行。但是,我个人不推荐这种写最明显例子的方式:仅仅几十行代码或者单个脚本文件实现了一个简单的功能(一个小爬虫,用乌龟画一幅画等),但是它们都是以与以前相同的风格编写的。如果name__=='__main',只有一个文件不建议先写,因为无法导出。其次,如果有多个文件,强烈建议入口文件(main.py)不要写这句话。理论上,既然它是起点,它的内容不应该被导出以供其他模块使用。最后,同样不建议把这个判断写在一个多文件的non-going文件中,因为你最多只能写一些这样的测试代码。尽管如此,测试代码仍应分开并写入专用目录或文件中。每当我不假思索地看到这么繁琐的代码时,我就觉得很不舒服。你为什么要写那个if语句?如果可能,您应该拆分您的主要功能,甚至不要将其包装成一个功能!总结一下打破常规,编写真正的代码。main输入函数是某些语言特有的,不应该在Python中使用。应该了解脚本语言的特点,写出简洁大方的风格。使用main.py而不是main()。由于Python的程序执行单元是脚本文件而不是函数或类,因此建议将入口文件命名为main.py,并根据需要确定内部函数。尽可能使用main.py作为入口文件。该文件可以直接在命令行中使用“-m”参数。
