通俗的理解__name__ ="__main__"的意思就是:当.py文件被直接运行时,if __name__ = "__main__"之下的代码快将被运行;当.py以模块的形式被导入时,if __name__ = "__main__"之下的代码将不被运行
程序入口
对于很多编程语言来说,程序都会有一个入口,python属于脚本语言,不像编译型语言那样先将程序编译称二进制再运行,而是动态的逐行运行。也就是从脚本的第一行开始运行没有统一的入口。一个python的源码除了可以直接运行外,还可以做成模块被其他.py文件导入。
代码实例:
现在有以下一个源码:number.py
1 p = 2 2 def main: 3 print("p = ",p) 4 5 main() 6 7 运行结果:p = 2
当我们将此源码作为模块进行导入时
1 from number import p 2 def func(numbers): 3 return numbers *(p ** 2) 4 def main: 5 print("number",funs(2)) 6 7 main() 8 #运行结果: 9 p = 2 10 number8
现在我们对number.py进行修改,添加if __name__ = "__main__"
1 p = 2 2 def main: 3 print("p = ",p) 4 if __name__ = "__main__": 5 main()
此时当number.py被作为模块进行导入时,if __name__ = "__main__"后面的语句将不会被执行
if __name__ = "__main__"就相当于一个程序入口,也可以理解为是一个编程习惯吧