__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
python文件执行方式:
1.作为脚本直接执行。
2.import到其他的python脚本中被调用执行。
因此,if __name__ == '__main__':作用就是控制这两种情况执行代码的过程。
1)如果作为脚本直接运行,那么if __name__ == '__main__':语句之前和之后的代码都会被执行;
2)如何作为模块被调用,那么只会执行if __name__ == '__main__':语句之前的代码;
运行原理:
每个python文件都会包含内置的变量__name__,当该模块当做脚本直接执行时,__name__等于‘__main__’,如果该模块import到其他模块或者文件中时,则该模块的__name__等于模块名称(不包含后缀.py)。
就是这段代码中我们写的函数,我们不仅可以直接在这个代码文件中编写使用它们,也可以将这个文件作为一个包通过import 文件名(不用加.py)的方式来在其他文件中使用。而这个if语句就保证了,我们可以在不删除这段代码(主要是用于调试的)的基础上将其作为包调用,而不会被执行。这样对于我们的调试和使用都是一个方便。