如何理解if __name__== "__main__"

参考百度链接http://tieba.baidu.com/p/2745990791

 

  在理解一个大型工程文件时,用到一个用python写的编译文件,其中文件末尾有如下语句:

if __name__=='__main__':    #python里单双引号的区别好像不太大,具体见另一篇博文。
  p=process()
  p.do_process()

  理解基本要点:
  第一:python每一个文件都是模块,文件名(不包括扩展名)是模块名字。
  第二:每一个模块有一个__name__属性。(我理解成每个模块都有这么一个隐式的固有属性)
  第三:例如,文件名为a.py 模块名为a,在这样执行代码时,python a.py 这个__name__的值就是__main__。
  第四:在b.py中导入模块a:import a,如果这样,a.py代码中__name__的值就变成了a。
  

  总结:if __name__ == "__main__":这个判断的作用主要有2个:

  第一:可以在这个判断后面加入测试代码;
  第二:防止这个语句后的代码在本模块被其它模块import时被执行(因为当被import时,__name__属性就不等于__main__了,条件不成立,自然也不会调用随后的语句)。如果没有这个代码,可能被执行两次(个人理解是:一次是在import时,另一次是主程序调用该模块时)。

posted on 2014-03-24 20:22  superfox  阅读(121)  评论(0)    收藏  举报

导航