为什么一个名为"main"的函数没有任何特殊意义?



在Python中,为什么一个名为main的函数不像在C和Java中那样具有任何特殊意义?

如果程序员从C或Java切换到Python怎么办?他应该留下来吗在 Python 中使用 main 也像在 C 或 Java 中使用一样,因为这是他现在的风格编程或从广义上讲,它在某种程度上对做是有害的用Python编程?

编辑:我已经浏览了这篇文章,其中提到了一个非常好的例子,为什么第一次程序员应该避免在python中main在python中有害。

你还应该问,为什么在C和Java中main具有特殊的意义。这只是语言设计师的一个选择。 main本可以被称为startbegin但有人选择了main,它卡住了。

在Python中,没有理由不能main调用函数并将其作为程序的起点。 但是,Python 有自己的语法来识别某个文件是否等同于 main

__name__ == "__main__"

这通常包装为if的一部分,并且可能只是在调用实际启动程序的 main 函数中具有一行。

Python和许多(所有?)脚本语言设计的一部分是代码可以简单地内联编写。您不必将所有内容包装在函数中。因此,许多简单的脚本根本不需要任何函数。 例如,旋转日志文件的 cron 作业可以作为代码块写入 python 文件中,没有定义任何函数。

在这种情况下,main方法不是必需的。

在许多方面不需要main使语言更加灵活,特别是对于更简单的任务。

补遗:

为您的编辑添加一些上下文。那篇文章提出了一个非常糟糕的论点。实际上,函数名称冲突并不少见,因为有许多模块做相同或相似的事情(在核心中并不多,但一旦开始使用 pip,你就会遇到奇怪的冲突)。因此,使用描述性函数名称并避免执行from foo import *是有益的。

就像C++程序员通常认为用using namespace std污染你的命名空间是不好的形式一样,Python程序员通常认为用import *污染你的命名空间是不好的形式,特别是因为它如果在任何地方使用都会引起滚雪球效应。

最后,您不太可能在程序中调用 2 个函数main 。您更有可能在其他地方发生名称冲突。真正的危险是通配符导入,而不是main函数。

这样的程序员应该这样做:

if __name__ == "__main__":
    # run stuff

如果未导入模块,则变量 __name__ 设置为 "__main__"

在 Python 中,有一些东西可以main()函数

if __name__ == '__main__':
  # Your main function

仅当 Python 文件尚未作为模块导入时,此 if 块中的代码才会运行。

如果你决定使用那个丑陋的main()函数,Python 等价物将是这样的:

def main():
  # ...
if __name__ == '__main__':
  main()

我觉得它不是很漂亮。

在python中,.py文件可以用作模块,也可以直接运行,因此main用于标识如果文件直接运行或文件作为模块导入,则要运行哪个部分。

file.py:

def func(x,y):
    print x+y
if __name__=='__main__':
    func(5,2):

如果直接执行,则打印 7

导入时,主部件不运行:

>>> from so32 import *
>>> func(5,5)
10
>>> func(10,20)
30

在Python中,为什么一个名为main的函数不像在C和Java中那样具有任何特殊意义?

因为 python 在设计时没有考虑到 C、java 或此类语言,所以有些语言实际上不使用 main,http://c2.com/cgi/wiki?HelloWorldInManyProgrammingLanguages 有相当多的hello world程序,因为您可以看到并非所有程序都使用 main,尽管您可能无法真正比较它们......

无论哪种方式,正如其他人所说的那样,你都可以通过检查if __name__ == '__main__':来检查模块是否直接从解释器运行,这里有一些来自python创建者Guido Van Russon关于如何编写主要函数的提示。

如果程序员从C或Java切换到Python怎么办?他是否应该继续在 Python 中使用 main,就像在 C 或 Java 中一样,因为这是他现在进行编程的风格,或者从广义上讲,它对用 Python 编程是有害的?

当你编写Python代码时,或者当你编写

任何程序时,总是试图让代码在该语言中看起来很自然,这意味着遵循语言开发人员或整个社区设定的标准和实践,请不要像Python那样编写C或Java代码,这是可能的,但它皱眉, 代码往往容易出错,很难理解,有时甚至很慢,这同样适用于任何其他语言。

这很少有很好的参考 Python 编码标准/最佳实践

有一个很好的解释为什么使用 main()

调用单个过程(或方法)是一个好主意,由 Kent D Lee 在 YouTube 上 - 基本上这是因为没有 main() 所有变量都是全局的,它们不仅需要更长的时间来访问,而且还冒着一个过程的变量会干扰另一个过程的变量的风险。此外,使用 main() 调用您的过程使您能够通过导入这些过程在另一个程序中重用它们。此外,您可以在不执行整个程序的情况下测试单个过程。当然,如果您要做的只是输出"hello world",那么拥有一个主要方法根本没有优势,而您这样做的唯一原因是找出它是如何工作的。
每个人都说Python对学习者有好处的原因是因为你可以很容易地立即开始做事 - 问题是,如果你要编写相当大的程序,你很快就会面临这样一个事实,即其他语言具有的所有这些复杂性实际上非常重要。

相关内容

  • 没有找到相关文章

最新更新