首页 > 代码库 > python程序中if __name__ == '__main__':的作用。

python程序中if __name__ == '__main__':的作用。

首先先用代码来看__name__的作用  

 1 ModuOne.py被调用程序
 2 
 3 def MethodOne (varone):
 4     print(__name__)
 5     print(varone)
 6  
 7 MethodOne("程序测试")
 8 
 9 C:\python ModuOne.py                #可以看到直接运行ModuOne.py时__name__被打印成“__main__”
10  __main__
11  程序测试                           #函数测试被执行
12   
13 
14 zuma.py主程序
15 
16 from ModuOne import MethodOne      #调用模块中的方法
17 print(__name__)
18 MethodOne("主程序")
19  
20 C:\python zuma.py                   #执行主程序时因为from导入时会现在执行一遍ModuOne.py程序
21  ModuOne                           #但这里ModuOne程序的__name__被打印成了被调用程序名
22  程序测试                           #而且ModuOne中的测试也被调用出来了
23  __main__
24  ModuOne
25  主程序
从上面例子中可以看出在执行本程序中__name__会等于“main”而被调用时__name__会等于被调用的程序名。
 
接下来在看一下if __name__ == ‘__main__‘:使用例子
 1 ModuOne.py被调用程序
 2 
 3 def MethodOne (varone):
 4     print("ModuOne in name:", __name__)
 5     print(varone)
 6 if __name__ == __main__:              
 7     MethodOne("程序测试")
 8     print("测试打印__name__:", __name__)
 9  
10 C:\python ModuOne.py                
11   ModuOne in name: __main__        #执行过程中if语句判断name等于‘main’所以执行MethodOne函数
12   程序测试                          #print打印也被执行了
13   测试打印__name__: __main__
14  
15  
16 zuma主程序
17 
18 from ModuOne import MethodOne
19 MethodOne("主程序测试")
20  
21 C:\python zuma.py                    #ModuOne程序加入if语,在执行主程序
22   ModuOne in name: ModuOne          #只执行了ModuOne程序中的MethodOne函数,而if语句下面的的则没执行
23   主程序测试


通过上面例子可以看出给程序增加if __name__ == ‘__main__‘:语句后程序测试调用更加灵活。

python程序中if __name__ == '__main__':的作用。