对于java、C++等编程语言来说,main函数是程序的入口
而python是一种解释型脚本语言,Python解释器在导入模块时,会将模块中没有缩进的代码全部执行一遍(模块就是一个独立的Python文件)。开发人员通常会在模块下方增加一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用name属性。关于这个属性有两点说明:
- name其实是python内置属性,是一个字符串,当前python文件中利用print(name),得到的打印结果就会是main。
- 当前的python文件被import到其他模块时,if name == 'main':下的代码不会被执行,因为被导入到其他模块之后,name 就变成了模块的文件名,而不再是main!
因此name == 'main' 就表示在当前文件中,可以在if name == 'main':条件下写入测试代码,如此可以避免测试代码在模块被导入后执行。