我们在学习python中,会看到if __ name__ == "__ main__"这个语句,那么这个语句到底有什么作用呢?在python中一个.py文件有两种使用方式,一种是作为脚本文件直接运行,第二种是通过import导入另一个.py文件中使用
我们举一个例子:
print("例子1")
if __name__=="__main__":
print("例子1_1")
我们发现,如果一个含有if __ name__ == "__ main__"语句的.py文件作为脚本文件直接运行时,if __ name__ == "__ main__"前后的语句均被执行。
我们再举一个例子:
import eg1 #将第一例子中的代码保存,文件名为eg1
运行结果:
我们发现,如果我们将eg1.py文件以import方式导入第二个脚本文件中并运行,运行的结果是eg1.py文件中的第一个print语句,也就是说,如果一个含有if __ name__ == "__ main__"语句的脚本文件,通过import的方式导入另一个文件中,运行代码是不执行if __ name__ == "__ main__"语句后的语句,即__ name__ == "__ main__"的结果是False。
那么为什么会出现这样的结果呢?我们再举一个例子
print("例子1")
print(__name__)
if __name__=="__main__":
print("例子1_1")
运行结果:
我们发现,当一个.py文件作为脚本文件直接运行的时候,__ name__就等于"__ main__",所以__ name__ == "__ main__"的结果是True,执行if __ name__ == "__ main__"后的语句。
如果某个.py文件以import方式导入另一个.py文件中,__ name__又等于什么呢?我们在举一个例子:
我们将eg1.py文件中的代码修改如下:
print(__name__)
if __name__=="__main__":
print("例子1_1")
我们在另一个.py文件中通过import方式使用:
import eg1
我们发现,如果某个.py文件以import方式被另一个.py文件导入使用,则此时该.py文件中的__ name__就等于文件名,所以__ name__ == "__ main__"的结果是False,不执行if __ name__ == "__ main__"后的语句。