为什么Python中没有main()函数?

为什么Python中没有main()函数?

在本文中,我们将学习为什么Python中没有main()函数。

毫无疑问,Python没有所谓的main函数,但是互联网上的文章经常引用“Python的main函数”和“建议写main函数”。他们的目的可能是复制原始的主函数,但是很多人被误导(或误解)并因此创建极其复杂的代码。

在开始之前,我们会回答以下两个问题-

  • 什么是“主函数”?

  • 为什么一些编程语言需要使用主函数?

一些编程语言,如C/C++、C#、JavaGo、Rust等,将main函数作为程序的执行入口,具有特定的含义-

  • 这个main函数名称是必需的,这意味着必须有一个主函数。

  • 因为只能有一个main函数,所以每个程序进入都是唯一的。

  • 语法格式有具体的要求,并遵循非常一致(fixed)的模板。

阅读更多:Python 教程

为什么必须要创建主入口函数?

这些是编译语言,需要将代码编译成可执行的二进制文件,以便操作系统/引导程序找到程序的启动点,因此必须定义这个函数。

简而言之,在一个庞大的可执行代码堆栈中必须定义一个重要的开始。

主函数是这些语言的重要有机特征。

然而,当我们回到Python时,情况发生了巨大的变化。

  • Python是一种解释性语言,也称为脚本语言。运行过程从上到下,一行一行地运行,这意味着它的起始点是已知的。

  • 每个.py文件都是可执行文件,可以用作程序的入口点,意味着程序的入口点是灵活的,不必遵循任何约定。

  • 在没有指定入口文件的情况下执行Python项目(更典型的命令行,例如” python -m http.server 8000″),可能是由于存在main.py文件,该文件作为“文件”在包中执行操作。

总之,脚本语言Python不同于编译语言。它可以在单个模块(即.py文件)的级别或由许多模块组成的包级别上选择灵活的执行技术,而其他语言则不能在没有定义明确入口的情况下执行。

换句话说,Python不需要程序员在语法级别指定统一的入口(无论是函数、类还是其他)。

一些用户可能会感到困惑,因为他们经常会遇到或编写以下代码 −

#定义主函数使用关键词def
def main():
   ……
if __name__ == '__main__':
   main()
Python

这不是Python的主函数吗? 我相信我们中的许多人都会同意! –

不,不是。

除了函数名是“main”外,它没有任何与我们之前描述的正统主函数的联系,它不是必需的,也不一定控制程序执行的顺序。如果没有它,不会引起任何语法问题。

有些人希望识别一个“主”函数,以强调它的“主要”状态,并将其人为地放置为第一个被执行的函数。

他们可能认为这样命名的函数更容易记忆。

在计算机范畴中,如果希望表明main()仅在当前脚本直接执行时运行,不应在其它模块中导入时运行,那么可以写成 if name‘main’。

但是我们不建议采用这种写法。

最常见的情况是,只有几十行代码或脚本文件实现了一个简单的功能(小型爬虫、使用turtle绘制图片等),但它们都与以前的代码一样编写。

由于以下原因,不建议写成 if name__main‘:

  • 首先,如果只有一个文件,则没有导出选项。

  • 其次,如果有多个文件,在入口文件(main.py)中编写此语句是强烈不建议的。因为它是起点,其内容不应导出供其他模块使用。

  • 最后,对于有多个文件的非入口文件,不建议编写此判断语句,因为最多只能创建一些测试程序。但是,测试代码应分离并保存在单独的目录或文件中。

每次遇到这种复杂的代码时,我都会感到担忧,想一想,你为什么要写那个if语句?如果可能的话,即使不用将其封装在函数中,也应将main函数分解!

总结

  • 打破惯性思维,构建真实的代码。主入口函数对某些语言是唯一的,但在Python中不应使用。您应该理解脚本语言的特点,以简单而有吸引力的风格编写代码。

  • 使用main.py而不是main()。因为Python的程序执行单元是脚本文件而不是函数或类,入口文件应该命名为main.py,内部函数由要求决定。

  • 如果可能的话,请使用main.py作为入口文件。该文件很容易与命令行参数“-m”结合使用。

结论

在本文中,我们了解到为什么Python没有像其他编程语言那样的main()函数。我们还了解了条件__name__=='__main__'

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册