2022年 11月 4日

python中的main函数

 python是一种解释型脚本语言,和C/C++语言不同,C/C++程序从main函数开始执行,python程序从开始到结尾顺序执行。先总结下python中的main函数的作用:让模块(函数)可以自己单独执行(调试),相当于构造了调用其它函数的入口,这就类似于C/C++里面的main函数了。

一方面:我们想要自己单独执行(调试)

这里我们实际调试一下(假设这个文件是test.py):

  1. #test.py
  2. print('Hello World!')
  3. def aaa():
  4. print('this message is from aaa function')
  5. def main():
  6. print('this message is from main function')
  7. if __name__ == '__main__':
  8. main()
  9. print ('now __name__ is %s' %__name__)

执行python test.py  输出:

  1. Hello World!
  2. this message is from main function
  3. now __name__ is __main__

这里我们看到我们定义的aaa函数没有被执行,而main函数里面的内容被执行了,表明 if __name__ == ‘__main__’: 这条判断语句是通过的,执行了判断条件里的main(); 

另一方面:通过import命令就可以使用其它.py文件里面的函数,我们将test.py中的模块(函数)导入call.py,需注意test.py和call.py放在同一个文件夹下;

  1. #call.py
  2. from test import aaa
  3. aaa()
  4. print ('now __name__ is %s' %__name__)

执行python  call.py  输出:

  1. Hello World!
  2. this message is from aaa function
  3. now __name__ is __main__

所以当我们自己写了.py文件,想要测试里面的函数时,就这样构造一个main函数入口就可以调用测试自己写的函数啦~


补充:test2.py

  1. print('Hello World!')
  2. def aaa():
  3. print('this message is from aaa function')
  4. def main():
  5. print('this message is from main function')
  6. main()
  7. aaa()

输出:

  1. Hello World!
  2. this message is from main function
  3. this message is from aaa function

实际上这样也可以直接调试,test2.py同样可以直接被其它模块调用,所以python里面mian的设置有些鸡肋? –》 不是的,当在call.py中执行 from test import aaa  这条命令时,仍然会执行 main()函数里面的内容,所以  if ‘__name__’ == ‘__main__’:  是有作用的