2024-05-14 21:58:18 发布
网友
在Python中,为什么一个名为main的函数不像在C和Java中那样有任何特殊的意义?在
main
如果程序员从C或Java切换到Python呢。他应该留下吗 在Python中使用main也像在C或Java中一样,这是他现在的风格 或者从广义上说,它是有害的 用Python编程?在
编辑:我浏览了这篇文章,其中有一个很好的例子提到了为什么第一次程序员应该避免使用pythonmain in python harmful中的main。在
在Python中,的作用是main()函数:
main()
if __name__ == '__main__': # Your main function
只有当Python文件未作为模块导入时,if块中的代码才会运行。在
if
如果您决定使用这个难看的main()函数,那么Python的等效函数应该如下所示:
我觉得不太好看。在
这样的程序员应该这样做:
if __name__ == "__main__": # run stuff
如果未导入模块,则变量__name__设置为"__main__"。在
__name__
"__main__"
您还应该问,为什么在C和Java中main有特殊的意义。这只是语言设计者的选择。main很可能被称为start或{},但有人选择了{},它就卡住了。在
start
在Python中,没有理由不能调用函数main,并将其作为程序的起点。但是,Python有自己的语法来标识某个文件是否与main等价:
__name__ == "__main__"
这通常被包装为if的一部分,并且可以只在调用main函数中有一行来实际启动程序。在
Python设计的一部分和许多(全部?)脚本语言就是代码可以简单地内联编写。你不必把所有的东西都包装在一个函数中。因此,许多简单的脚本根本不需要任何函数。例如,一个旋转日志文件的cron作业可以作为一个没有定义函数的python文件中的代码块来编写。在
在这种情况下,不需要main方法。在
在许多方面不需要main,这使得语言更加灵活,特别是对于更简单的任务。在
附录:
为编辑添加一些上下文。那篇文章的论据很差。实际上,函数名冲突并不少见,因为有许多模块执行相同或相似的操作(内核中不太多,但一旦开始使用pip,就会遇到奇怪的冲突)。因此,使用描述性函数名并避免执行from foo import *操作是有益的。在
from foo import *
与C++程序员普遍认为用{{CD13}}污染命名空间是不好的形式一样,Python程序员通常认为用{{CD14}}污染命名空间是不好的形式,尤其是因为如果到处使用它会造成滚雪球效应。在
最后,您不太可能在程序中调用2个函数main。你在其他地方更容易发生名字冲突。真正的危险是通配符导入,而不是main函数。在
在Python中,的作用是
main()
函数:只有当Python文件未作为模块导入时,
if
块中的代码才会运行。在如果您决定使用这个难看的
^{pr2}$main()
函数,那么Python的等效函数应该如下所示:我觉得不太好看。在
这样的程序员应该这样做:
如果未导入模块,则变量
__name__
设置为"__main__"
。在您还应该问,为什么在C和Java中},但有人选择了{},它就卡住了。在
main
有特殊的意义。这只是语言设计者的选择。main
很可能被称为start
或{在Python中,没有理由不能调用函数
main
,并将其作为程序的起点。但是,Python有自己的语法来标识某个文件是否与main
等价:这通常被包装为
if
的一部分,并且可以只在调用main
函数中有一行来实际启动程序。在Python设计的一部分和许多(全部?)脚本语言就是代码可以简单地内联编写。你不必把所有的东西都包装在一个函数中。因此,许多简单的脚本根本不需要任何函数。例如,一个旋转日志文件的cron作业可以作为一个没有定义函数的python文件中的代码块来编写。在
在这种情况下,不需要
main
方法。在在许多方面不需要
main
,这使得语言更加灵活,特别是对于更简单的任务。在附录:
为编辑添加一些上下文。那篇文章的论据很差。实际上,函数名冲突并不少见,因为有许多模块执行相同或相似的操作(内核中不太多,但一旦开始使用pip,就会遇到奇怪的冲突)。因此,使用描述性函数名并避免执行
from foo import *
操作是有益的。在与C++程序员普遍认为用{{CD13}}污染命名空间是不好的形式一样,Python程序员通常认为用{{CD14}}污染命名空间是不好的形式,尤其是因为如果到处使用它会造成滚雪球效应。在
最后,您不太可能在程序中调用2个函数
main
。你在其他地方更容易发生名字冲突。真正的危险是通配符导入,而不是main
函数。在相关问题 更多 >
编程相关推荐