Python 为什么名为'main'的函数不';没有什么特别的意义吗?
在Python中,为什么名为Python 为什么名为'main'的函数不';没有什么特别的意义吗?,python,main,Python,Main,在Python中,为什么名为main的函数不像在C和Java中那样具有特殊意义 如果程序员从C或Java切换到Python呢。他应该继续吗 在Python中使用main,就像在C或Java中一样,这是他现在的风格 编程或者从广义上讲,它在某种程度上是有害的 用Python编程 编辑:我已经阅读了这篇文章,其中有一个非常好的例子提到为什么第一次程序员应该使用python来避免main。这样的程序员应该这样做: if __name__ == "__main__": # run stuff
main
的函数不像在C和Java中那样具有特殊意义
如果程序员从C或Java切换到Python呢。他应该继续吗
在Python中使用main
,就像在C或Java中一样,这是他现在的风格
编程或者从广义上讲,它在某种程度上是有害的
用Python编程
编辑:我已经阅读了这篇文章,其中有一个非常好的例子提到为什么第一次程序员应该使用python来避免main。这样的程序员应该这样做:
if __name__ == "__main__":
# run stuff
如果未导入模块,则变量
\uuuuu name\uuuuuu
设置为“\uuuuuu main\uuuuuu”
。在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()
函数的函数:
if __name__ == '__main__':
# Your main function
此if
块中的代码仅在Python文件未作为模块导入时运行
如果您决定使用这个丑陋的main()
函数,那么Python等价物如下:
def main():
# ...
if __name__ == '__main__':
main()
我觉得它不太好看。你也应该问,为什么在C和Java中,
main
有特殊的意义。这只是语言设计师的选择main
很可能被称为start
或begin
,但有人选择了main
,它卡住了
在Python中,没有理由不能调用函数main
,并将其作为程序的起点。但是,Python有自己的语法来识别某个文件是否与main
等效:
__name__ == "__main__"
这通常被包装为if
的一部分,并且可以在调用main
函数时使用一行代码来实际启动程序
Python和许多(所有?)脚本语言设计的一部分是代码可以简单地内联编写。您不必将所有内容都封装在函数中。因此,许多简单的脚本根本不需要任何函数。例如,旋转日志文件的cron作业可以作为python文件中的一块代码编写,而不需要定义任何函数
在这种情况下,不需要使用main
方法
在许多方面不需要main
,这使得该语言更加灵活,特别是对于更简单的任务
附录:
为编辑添加一些上下文。那篇文章的论点很差。实际上,函数名冲突并不少见,因为有许多模块做相同或类似的事情(在内核中不是很多,但一旦开始使用pip,就会遇到奇怪的冲突)。因此,使用描述性函数名并避免从foo import*执行,是有益的
与C++程序员普遍认为使用<代码>使用命名空间STD 污染名称空间是不好的形式,Python程序员通常认为它是坏的形式,用<代码>导入*<代码>污染您的命名空间,尤其是因为它可以在到处使用时产生滚雪球效应。
最后,您不太可能在程序
main
中调用2个函数。你很可能在其他地方发生名字冲突。真正的危险是通配符导入,而不是main
函数
在Python中,为什么称为main的函数不像在C和Java中那样具有特殊意义
因为python在设计时没有考虑到C、java或类似的语言,所以有些语言实际上不使用main,有相当多的hello world
程序,因为您可以看到,并不是所有的程序都使用main,尽管您可能无法真正比较它们
无论是哪种方式,正如其他人所说,您都可以通过检查if\uuuuu name\uuuu=='\uuuu main\uuu':
oh来检查模块是否直接从解释器运行。以下是python创建者Guido Van Russon关于如何编写主函数的一些提示
如果程序员从C或Java切换到Python呢。他是否应该继续在Python中使用main,就像在C或Java中一样,因为这是他现在的编程风格,或者从广义上说,它对Python编程有害
当你编写python代码时,或者当你编写任何程序时,总是试图让代码在该语言中看起来自然,这意味着要遵循语言开发人员或整个社区制定的标准和实践,请不要用python编写c或java类代码,这是可能的,但这是不可取的,代码往往容易出错,并且很难理解,有时相当慢,这同样适用于任何其他语言
这有很多好的参考资料有一个很好的解释,解释了为什么使用main()调用单个过程(或方法)是一个好主意,作者是YouTube上的Kent D Lee-基本上,这是因为没有main(),所有变量都是全局变量,而且它们不仅需要更长的访问时间,它们还存在一个过程的变量会干扰另一个过程的变量的风险。还可以使用main()调用您的过程,通过导入这些过程,您可以在另一个程序中重用这些过程。此外,您可以在不执行整个程序的情况下测试单个过程。当然,如果您要做的只是输出“hello world”,那么拥有一个main方法是毫无好处的,您这样做的唯一原因是了解它是如何工作的。
每个人都说Python对学习者有好处的原因是因为你可以很容易地开始做事情——问题是t