if __name__ == '__main__'
相当于Python模拟的程序入口,Python本身并没有这么规定,这只是一种编码习惯。由于模块之间相互引用,不同模块可能有这样的定义,而程序入口只有一个。到底哪个程序入口被选中,这取决于__name__
的值。
1 、__name__
可以反映一个包的结构
__name__
是内置变量,可用于反映一个包的结构,清晰地反映一个模块在包中的层次。
2 、__name__
也可以表示当前模块的名字
__name__
是内置变量,可用于表示当前模块的名字。
3、如果一个.py文件(模块)被直接运行时,则其没有包结构,其__name__
值为__main__
,即模块名为__main__
。
所以,if __name__ == '__main__'
的意思是:
当.py文件被直接运行时,写在if __name__ == '__main__'
之下的代码块将被运行;
当.py文件以模块形式被导入时,写在if __name__ == '__main__'
之下的代码块不被运行。
参考文章