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

毫无疑问,Python没有所谓的main函数,但是,关于 互联网经常引用“Python的主要功能”和“建议编写 主要功能。"

它们的目的可能是复制原始的主要方法,但许多人 被误导(或误解)并因此创建极其复杂的代码。

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

  • “主要功能”到底是什么?
  • 为什么有些编程语言需要使用main函数?

一些编程语言,如C / C++,C#,Java,Go,Rust等,使用。 main 函数作为程序的执行条目,具有特定含义 -

  • 此主函数名称是必需的,这意味着必须有一个主函数名称 功能。
  • 因为只能有一个主函数,所以程序中的每个条目都是 独特。
  • 语法格式有特定的要求,并遵循非常一致(固定) 模板。

为什么你必须使主入口功能 命令的?

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

简单地说,有一个重要的开始,必须在一大堆 可执行代码。

主要功能是这些语言的基本有机特征。

但是,当我们回到Python时,情况发生了巨大变化。

  • Python 是一种解释型语言,也称为脚本语言。这 运行进程从上到下,逐行运行,这意味着其 起点是已知的。
  • 每个.py文件都是一个可执行文件,可以用作程序的入口点, 这意味着程序的入口点是灵活的,任何约定都必须是 跟着。
  • 在不指定入口文件的情况下执行 Python 项目时(更多 典型的命令行,如“python -m http.server 8000”),可能是由于 到 main.py 文件的存在,该文件在包中作为“文件”来执行 操作。

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

换句话说,Python不需要程序员指定一个统一的条目(无论 它是句法级别的函数、类或其他函数。

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

<span style="color:#000000"># defining the main function using the def keyword
def main():
……
if __name__ == '__main__':
main()
</span>

这不是Python的主要功能吗?我相信我们中的许多人都同意!−

不,不是。

除了函数名称是“main”之外,它没有链接到正统的主 我们前面描述的功能,它不是必需的,也不一定控制订单 的程序执行。没有它,它不会引起任何语法问题。

有些人希望确定一个“主要”功能,以强调其“主要”状态并 将其作为人工执行的第一个函数。

他们可能认为具有这些名称的函数更容易记住。

他们可能希望写 name =='main' 来证明 main() 仅在 当前脚本是直接执行的,导入到时不应执行 其他模块。

但是,我们不建议这种写作风格。

最常见的例子:只有几十行代码或脚本文件 实现了一个简单的功能(一个小爬虫,用画一幅画等), 但它们的编写方式都与以前相同。

由于以下原因,不建议写如果name__=='__main' -

  • 首先,如果只有一个文件,因为没有导出选项。
  • 二、如果有多个文件,在入口文件中写下这句话(main.py) 强烈建议不要这样做。因为它是起点,所以它的内容不应该 导出以在其他模块中使用。
  • 最后,在具有大量文件的非条目文件中编写此判断不是 建议,因为最多可以做的是创建其中一些测试 程序。但是,测试代码应分开并存储在单独的 目录或文件。

每次遇到这个复杂的代码而不假思索时,我都会担心。为什么 你写了IF语句吗?如果可能的话,拆分主函数甚至没有 将其包装在一个函数中!

总结一下

  • 突破惯性思维,构建真实的代码。主要入口功能 是某些语言所独有的,不应在 Python 中使用。你应该 理解脚本语言的功能,并用简单和 吸引人的风格。
  • 使用 main.py 而不是 main()。因为 Python 的程序执行单元是一个 脚本文件而不是函数或类,入口文件应命名为 main.py, 内部功能由需求决定。
  • 如果可行,请使用 main.py 作为入口文件。此文件易于组合使用 在命令行上使用“-m”参数。

结论

在本文中,我们了解了为什么 Python 与其他编程语言不同,缺乏 main() 函数。我们还了解了条件__name__=='__main__'