关于Python中if __name__ == "__main__"的理解:
在学习Python语言中,遇到了if __name__ == "__main__"的理解,查阅了网上的一些资料和加上自己的理解,对该语句首先从该.py文件的直接运行到该.py文件被其他.py文件通过import等语句导入分析,然后在从私有化方面进行理解。
第一步:我们首先创建两个.py文件,名字分别为:testOne.py和testTwo.py文件。
testOne.py内容为:
def testOne(): print("testOne方法执行") if __name__ == "__main__": testOne() else: print("testOne方法被该模块导入")
testTwo.py文件内容为:
import testOne def testTwo(): print("测试testTwo方法执行") testOne.testOne() #调用testOne.py文件下的testOne()方法 if __name__ == "__main__": testTwo()
第二步:分别执行testOne.py文件和testTwo.py文件
1. testOne.py文件显示内容:
2. testTwo.py文件显示内容:
第三步:分析第二步为什么会这样显示编译结果,if __name__ == "__main__"的语句的作用到底是什么?
当我们会想C语言时,C语言有一个main()函数作为程序的入口,则程序一个会从main()函数开始逐行执行,进行编译。对于Python语言的理解,if __name__ == "__main__"是为了判断本文件(即模块)是相当于C语言的主程序main()作为入口进行执行,还是该模块被其他程序import。
1.直接运行testOne.py文件时,显示如第二步1所示内容
当编译本文件时,if __name__ == "__main__"是为了判断本文件(即模块)是相当于C语言的主程序main()作为入口进行执行
2.直接运行testTwo.py文件时,显示如第二步2所示内容
该模块被其他程序(testTwo.py文件)import时,if __name__ == "__main__"中的方法不会被执行,会执行else:下的内容
[注]上图的else:下内容可以参考第一步中testOne.py的完整程序。
第四步:if __name__ == "__main__"的另一种理解,即把 if __name__ == "__main__":下代码块当做为私有化部分,只有本文件被执行时,才会执行该内容,当本文件被调用(import)时,不会对其他模块显示,即此代码块不对其他模块看见。
总结:此为自己的理解,如有不足的地方,在下面留言,我会及时修改。我们共同学习,共同进步。一起加油!!!!
注:该程序的编写是在PyCharm软件下编译的。