像C语言、C++、C#、Java这种语言,程序总是从main函数开始执行的。但Python程序与这些语言不同,它并不需要特殊的函数入口,而是从程序的第一个语句顺序往下执行。但在Python中,只有当直接执行包含main函数的代码块时,main函数可以得到执行,但当包含main函数的语句块被导入时不会被执行。
Python是一种解释型语言,同JavaScript,VbScript一样是一种脚本语言,其运行过程是从上到下,逐行执行的,代码的开始即程序的起点,这决定了它不必像Java,C#那种编译型的语言使用固定的main函数作为程序的入口。
同时,在Python中每个Python文件(后缀为.py)都可以作为一个可以运行的文件,满足实际工作的需要,这种方式更加灵活,而且方便调试。
在本文第一句话已经讲明了Python中main()函数的作用。如果包含main()函数的模块A中除了main()函数外,可能要单独实现一些功能,并且只想在单独运行A这个文件时,执行main()函数中的功能,而在该代码块被包含在其它代码中B不准备执行main()函数的功能时,可以在A中定义main函数,如在main函数中调试A中的一些功能等。
当然,在习惯了C#,Java,C语言等这种程序的人,可能也想通过main函数告知别人,我的程序是从main这里开始运行的,这种情况也是main函数的一个作用。
在Python中,main函数不是必须的,没有main函数,Python程序同样可以运行的很好,只要把程序组织的良好,有没有main函数,同样可以达到实际需要。
__name__是Python中一个内置的变量,用于存储当前运行模块的名称。
当模块直接被执行时,其保存的值为__main__;当模块被其它模块导入时,显示其它模块的名称。
下面给出一个例子来说明Python中main函数的具体使用方法。
下面这段程序位于名为"hello.py"的文件中。
print("Hello World!")
if __name__ == "__main__":
print("欢迎关注『优雅的代码』公众号")
print("我在hello里:"+__name__)
运行输出的内容如下:
Hello World!
欢迎关注『优雅的代码』公众号
我在hello里:__main__
下面这段程序位于testmain.py文件中,程序首先导入上面写的hello文件,然后额外输出一行信息。
import hello
print("Hello,优雅的代码")
print("我在test里:"+__name__)
输出结果如下所示:
Hello World!
我在hello里:hello
Hello,优雅的代码
我在test里:__main__
从上面两段程序来看,当当前程序直接被运行时,__name__的值是“__main__”;而程序被包含到其它程序中运行时,位于被包含程序的__name__值是程序的名称,如上面的例子中,hello被包含在testmain中执行时,其__name__输出的值为:hello。
以上是关于Python中main函数的介绍,有误之处,敬请留言指正。
新闻热点
疑难解答