赞
赏
Python 是一种解释型脚本语言,和 C++、Golang 等语言不同, C++、Golang 等程序都是从 main 函数开始执行,而 Python 程序是从开始到结尾顺序执行。
Python 中的 main() 函数只有当该 Python 脚本直接作为执行程序时才会执行,当该 Python 脚本被作为模块被导入时,其中的 main() 函数将不会被执行。
这是由于两方面原因,一方面,main 函数是所有执行程序的入口,另一方面,Python 的解释器是顺序执行脚本的并且不会调用任何不属于程序本身的代码和 函数。
Python 的 main 函数可以实现,当我们的脚本程序是以被导入的方式执行的,那么不会执行其中的 main 函数的程序逻辑,如果脚本程序是执行运行的,那么才会执行 main 函数中的逻辑。
def main():
pass
Python 的 main 函数,是一个没有任何 参数 和 返回值 的函数。
if __name__ == '__main__':
main()
在 Python 中,只要创建了一个模块,也就是一个 .py 文件,这个模块就有一个内置属性的 name ,该模块的 name 的值取决于如何应用这个模块。
也就是,如果直接运行该模块,那么 __name__
的值就是 "__main__"
。如果 import 一个模块,那么模块 name 的值通常为模块文件名。
所以,上述代码的意思就是,如果模块是被直接运行的,则 main 代码块会被运行,如果该模块是被 import 导入的,则代码块不被运行。
直接运行包含 main 函数的代码,则 main 代码会被执行
print("嗨客网(www.haicoder.net)")
def func():
print('hello, haicoder!')
if __name__ == "__main__":
func()
程序运行后,控制台输出如下:
我们创建一个 haicoder.py 文件,在该文件中输入以上代码,接着,直接运行该文件,我们发现 func 函数执行了,也就是说,我们的 if 判断 生效了,即 main 函数执行了。
因为,此时的 haicoder.py 文件是被我们直接运行的,因此 __name__
的值就是 __main__
,因此 main 函数执行,func 函数被执行。
首先,创建一个 test.go
输入以下代码:
print("嗨客网(www.haicoder.net)")
def func():
print('hello, haicoder!')
if __name__ == "__main__":
func()
接着,再次创建一个 haicoder.go
输入以下代码:
import test
print("嗨客网(www.haicoder.net)")
print("Run HaiCoder")
程序运行后,控制台输出如下:
我们发现,程序只输出了 haicoder.py
文件中的输出语句,没有执行 test.py
里面的 main 函数。
因此,这次 test.py
程序是以导入方式执行的,而不是直接运行的,因此,此时 test.py
里面的 __name__
此时不再是 __main__
,因此,main 函数不会被执行。
Python 中的 main() 函数只有当该 Python 脚本直接作为执行程序时才会执行,当该 Python 脚本被作为模块被导入时,其中的 main() 函数将不会被执行。Python main 函数语法:
def main():
pass
Python main 函数调用语法:
if __name__ == '__main__':
main()