最近入坑python,但是一直对python中程序执行的过程还是不清楚,以及python中main函数的使用?所以查阅了一些资料以及自己测试了一下,以便于对程序有更好的理解,故在此记录一番

1.创建单个测试test.py文件,观察单个文件运行时候,整个程序的执行顺序过程:

#test.py
print("我是顺序执行的")
def testp():
    print("我是调用执行的")
def main():
    print("我是主函数执行的")

if __name__=="__main__":
    testp()
    main()

测试结果输出:

我是顺序执行的
我是调用执行的
我是主函数执行的

主动执行test.py文件,发现首先输出的是print()语句,所以python中的main使用和c++中main有一点区别,c++中main表示程序的入口,而python当中是顺序执行的,并且顺序执行的是一些非类定义和非函数定义的没有缩进的代码段,到最末尾test.py文件会调用两个函数,我的理解是这里的main函数就没有c++当中那么重要了

2.创建调用文件调用test模块,观察调用的代码执行过程,以及模块名字:

#diaoyong.py
import test
print("调用test的名字是"+test.__name__)
print("我自己的名字是:"+__name__)

调用输出结果:

我是顺序执行的
调用test的名字是test
我自己的名字是:__main__

 

调用test.py文件时,会顺序将里面的非类定义和非函数定义的没有缩进的代码段先执行,继续观察变量__name__会发现:一份程序为了区分主动执行还是被调用,Python引入了变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'

3.所以会经常看到别人的代码这么写,同时也是典型的python文件结构:若是文件主动执行了,则最好写成跟上面的例子一样,main之前不要有可执行代码,这样做到程序从main()开始,流程逻辑性强,若是文件作为模块被调用,则可以不用写main(),从上而下顺序执行。

1 #/usr/bin/env/ python            #(1) 起始行
 2 #"this is a test module"          #(2) 模块文档(文档字符串)
 3 import sys
 4 import os              #(3) 模块导入
 5 
 6 debug = True              #(4) (全局)变量定义
 7 class FooClass (object):
 8     'foo class'
 9     pass                           #(5) 类定义(若有) 
10 def main():
11     'test function'
12     foo = FooClass()
13     if debug:
14         print 'ran test()'         #(6) 函数定义(若有) 
15 if __name__ == '__main__':
16     main()