if __name__ == '__main__'(四个下划线,每个下划线都是由两个下划线组成)
首先由几行代码来说明:
新建一个pi.py的代码
PI=3.14 def main(): print("PI:",PI)
main()
另外新建一个area.py
from pi import PI #从pi模块中引入PI函数 def calc_round_area(radius): return PI*(radius ** 2) def main(): print("round area:",calc_round_area(2)) main()
运行结果如下
发现一个问题执行area.py程序时,同时也执行了pi.py中的main()函数,这显然不是我们想要的结果,如果添加if __name__ ==' __main__'代码,执行结果如下:
PI=3.14 def main(): print("PI:",PI) if __name__ == "__main__": main()
执行area.py,只执行area.py中的main()函数,这才是我们想要的结果。
if __name__ == '__main__'其实代表Python程序的模拟入口,由于不同模块之间相互引用,不同模块可能都有这样的定义,但是程序入口只有一个。到底哪个程序入口被选中,取决于__name__的取值。其实这句代码作用就是模块直接运行时,代码块执行,模块被导入时,代码块不执行。
这行代码实质是:编写私有化部分,这行代以上内容可以被其他调用,这行代码以下部分只有自己看见,当被调用时别人无法看见更不能调用执行。
引用资料:https://blog.konghy.cn/2017/04/24/python-entry-program/