python之if __name__ == '__main__'

对于Python初学者来说,在看别人代码时经常会看到if __name__ == "__main__",对于刚接触python的我们来说,不太明白这个代码的作用,也许我们一直在用,但是其实很多人并没有详细去了解过这段代码的意义。
这里,让我们来看看这句代码到底有何意义,又该在何种情境下使用?

python文件执行的两种方法:

一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。举例说明如下:

只要你创建了一个模块(一个.py文件),这个模块就有一个内置属性name生成,该模块的 name 的值取决于如何应用这个模块。说人话就是,如果你直接运行该模块,那么__name__ == "__main__";如果你 import 一个模块,那么模块name 的值通常为模块文件名。
如,创建一个test1.py:

def func():
    print('hello, world!')

if __name__ == "__main__":
    func()

模块中,首先定义了函数func(),用来打印出hello, world!,然后判断__name__是否等于 __main__,如果等于,有打印,反之则反,现在运行该模块,结果为:

hello, world!

说明__name__ 等于__main__
这时,输入代码:
再创建一个test2.py:

import test1

print('bye, world!')

模块中,首先import test1,然后打印bye, world!做测试用,运行该模块,结果为:
bye, world!
运行结果仅有bye, world!,说明__name__不等于__main__

通过上面test1.py和test2.py两个模块,我们现在可以得出一个非常实用的结论:
如果模块是被直接运行的,则代码块被运行,如果模块被import,则代码块不被运行

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。