if name == 'main':

Python解释器在导入模块时,会将模块中没有缩进的代码全部执行一遍(模块就是一个独立的Python文件)。

开发人员通常会在模块下方增加一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。

__name__属性

__name__属性是Python的一个内置属性,记录了一个字符串:

  • 若是在当前文件,name 是__main__

   eg:在hello文件中打印本文件的__name__属性值,显示的是__main__

  Python中:if __name__ ==

  • 若是导入的文件,__name__是模块名

   eg:test文件导入hello模块,在test文件中打印出hello模块的__name__属性值,显示的是hello模块的模块名

 Python中:if __name__ ==

if name == 'main':

因此__name__ == 'main' 就表示在当前文件中,可以在if name == 'main':条件下写入测试代码,如此可以避免测试代码在模块被导入后执行。